Files
opendance-windows/project.yaml
T
zijunchiang e4e534f2a2 test(accept): 发布包级端到端验收(读包内 pck 而非源码)+ T-WIN-018
`build/verify.sh` 跑的是仓库源码(`godot --path .`),交付给用户的是 zip 里的
OpenDance.pck + OpenDance.exe,差别全在「导出」这一步:导出预设漏资源、pck 没
重新生成、版本号没同步、契约快照与 pck 不一致 —— 都只在包里才暴露。
本仓 v0.2.1 的 PE 版本元数据就是这么翻的车。

新增:
  * build/probe-release.gd —— 包内运行时探针。用
    `godot --headless --main-pack <pck> --script <探针>` 只读包内资源,断言并
    quit(0/1):
      1) application/config/version == 期望版本(界面版本唯一来源,§11.1);
      2) AboutScreen.app_version() == 期望版本(「关于」清单真正显示的值);
      3) 主场景可加载、四个 autoload 都在场景树里;
      4) 15 个关键资源(UI/模型/场景/网络/评分)在包内都可加载;
      5) 包内 Credits.CONTRACT_VERSIONS 与包内 contracts/VERSION 快照逐项一致
         (抓「pck 用旧契约构建、快照却拷了新的」)。
  * build/accept-release.sh —— 一个 zip(或已解压目录)跑完:sha256 → 解压
    (deflate 用 unzip / LZMA 用 7z,并检查没有 .partN 残留)→ 文件清单 →
    check-pe-version.sh → 包内 pck 启动 180 帧无 SCRIPT ERROR → 探针。
  * package-release.sh 结尾打印下一步验收命令;README 补用法。

实测(对**已发布**的 v0.2.2 资产重新下载后跑):
  sha256 OK;PE 版本资源 0.2.2;包内 pck 启动 180 帧无错误;
  包内 version=0.2.2;AboutScreen.app_version()=0.2.2;主场景
  res://scenes/main.tscn;autoload 齐备;15 项关键资源可加载;
  pck 内契约表与包内 contracts/VERSION 一致 → 发布包级验收全部通过。

反向验证:
  * 篡改包内 contracts/VERSION 的 rest-api=0.4.0 →
    ✗ ["rest-api: pck=0.5.0 快照=0.4.0"],退出码 1;
  * 期望版本写 0.2.1 对 v0.2.2 的包 → 三处版本断言全失败,退出码 1。

顺带修掉脚本自身一个缺陷:SHA256SUMS 用相对路径 + cd 到包目录后被二次拼接成
dist-release/dist-release/SHA256SUMS,导致 sha256 校验假失败(其余检查仍全绿,
很容易被忽略)。首跑时正是它把「全部通过」变成了失败。

verify.sh 仍全绿(754 通过 / 0 失败 / 5 跳过)。
2026-09-17 04:50:40 +08:00

115 lines
3.6 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
project: opendance-windows-client
version: 0.2.2
repository: opendance-windows
default_branch: main
engine: Godot 4.7.2
contracts_version:
rest-api: 0.5.0
websocket-keypoints: 0.2.0
data-models: 0.7.0
skeleton-topology: 0.2.0
model-formats: 0.5.0
database: 0.4.0
# 契约变更流程(文档 7.2):
# 任何跨端契约变更必须先在 opendance-web 修改 contracts/ 并提升版本,
# 再在本项目创建适配任务。本项目内的 contracts/ 只是只读快照。
dependencies:
- name: opendance-web
kind: rest-api
contract: contracts/rest-api.yaml
usage: 曲目/动作/模型目录与关键点序列
- name: opendance-android
kind: websocket-consumer
contract: contracts/websocket-keypoints.md
usage: 本端为服务端,Android 主动连入推流
tasks:
- id: T-WIN-001
file: tasks/001-scaffold.md
scope: Godot 项目骨架
status: done
- id: T-WIN-002
file: tasks/002-rest-client.md
scope: 调用 Web 服务端 API
status: done
- id: T-WIN-003
file: tasks/003-websocket-receiver.md
scope: 接收 Android 关键点帧
status: done
- id: T-WIN-004
file: tasks/004-keypoint-deserialize.md
scope: 239 字节帧反序列化
status: done
- id: T-WIN-005
file: tasks/005-vrm-loader.md
scope: VRM 模型加载
status: done
- id: T-WIN-006
file: tasks/006-skeleton-retarget.md
scope: 关键点 -> VRM 骨骼重定向
status: done
- id: T-WIN-007
file: tasks/007-scoring-dtw.md
scope: DTW 评分引擎
status: done
- id: T-WIN-008
file: tasks/008-game-ui.md
scope: 主界面 + 游戏界面 + 结算
status: done
- id: T-WIN-009
file: tasks/009-source-display.md
scope: 模型/动作来源信息展示
status: done
- id: T-WIN-010
file: tasks/010-about-page.md
scope: 关于页面 + 开源声明
status: done
- id: T-WIN-011
file: tasks/011-build-script.md
scope: Windows 打包脚本
status: done
- id: T-WIN-012
file: tasks/012-about-version.md
scope: 「关于」清单展示当前版本号
status: done
- id: T-WIN-013
file: tasks/013-scene-selection.md
scope: API 升级 rest-api 0.5.0 + 场景选择 + 物理落地
status: done
- id: T-WIN-014
file: tasks/014-full-package.md
scope: 发布整包(单个 zip + SHA256SUMS,不拆分卷)
status: done
- id: T-WIN-016
file: tasks/016-aabb-transforms.md
scope: 场景包围盒沿树累乘变换(修复入树前用 global_transform 导致的 ERROR 与范围偏位)
status: done
- id: T-WIN-015
file: tasks/015-keepalive-dedup.md
scope: 连接保活 / 设备去重 / 状态机(契约 websocket-keypoints 0.2.0,与 T-AND-011 对齐)
status: done
- id: T-WIN-017
file: tasks/017-pe-version.md
scope: 发布包 exe 的 PE 版本资源(Windows 属性页显示的文件/产品版本)必须等于发布版本
status: done
- id: T-WIN-018
file: tasks/018-release-acceptance.md
scope: 发布包级端到端验收(读包内 pck:版本号 / 界面显示值 / 契约表 / 资源可加载)
status: done
deliverable:
artifact: opendance-windows-v0.2.2.zip
packaging: Godot 导出脚本(Linux 直接导出 / Windows 兜底)
release_rules: # 文档 §5.7 硬性要求
- 单个完整包,禁止 .partN 分卷
- 同时上传 SHA256SUMS(裸文件名,可直接 sha256sum -c)
includes:
- OpenDance.exe
- OpenDance.pck
- THIRD_PARTY.md
- README.txt
- README.md
- contracts/ # 当前版本契约快照