当前Pull Request已关闭, 关闭人@LuBo
本次检视确认 4 个需要处理的问题,其中验证器入口当前无法运行。
中 插件注册依赖尚未落地
PR 描述明确说明本插件需要 .ohos-agent/workspace.yaml,但该文件不在 PR 309 的文件树中,而只存在于当前仍为 open 的 companion PR #308。PR 309 目前自身可合并;若先单独合入,仓库中没有声明 ohos-delivery-kit 的 workspace 配置,插件无法按描述完成注册。
建议:为 PR 309 建立对 #308 的显式合入依赖/顺序约束,或把所需 workspace 声明纳入本 PR,并增加合并后插件发现测试。


高 workflows/ohos-delivery-kit/runtime/executables/validate-artifacts-contract.py:650
这里读取了从未定义的 ROOT,因此任何指向现有目录的正常调用都会在开始校验前抛出 NameError。本 PR 文件树中实测 python3 .../validate-artifacts-contract.py /tmp 可稳定复现;与源提交对比也显示同步过程只把导入路径改成了 SCRIPT_DIR,没有同步契约路径。
建议:按打包后的目录布局直接解析 SCRIPT_DIR.parent / "assets" / "contracts" / "artifacts.yaml",并增加针对发布包入口的端到端测试。


中 workflows/ohos-delivery-kit/runtime/executables/validate-artifacts-contract.py:1
该文件带有 shebang,技能文档也使用 {{EXECUTABLE_ROOT}}/validate-artifacts-contract.py <change-dir> 的直接调用形式,但 Git 记录的模式是 100644。按文档直接执行会得到 permission denied;即使修复 ROOT,该入口仍不可用。
建议:将脚本提交为可执行文件(100755),或把所有技能和主机适配器统一改为显式执行 python3 <script>,并覆盖该调用方式的测试。


中 workflows/ohos-delivery-kit/skills/using-odk/SKILL.md:122
路由技能要求读取 {{ASSET_ROOT}}/docs/adapters.md 和 template-injection.md,using-odk-bridge 与 odk-init 还引用了相同目录下的 contracts.md,但本 PR 的 runtime/assets/ 中没有 docs/。这些文件在声明的源提交中存在,却没有被 provenance.yaml 的 included assets 或 plugin.yaml 的 assets 收入,安装后相关阶段会命中不存在的路径。
建议:把运行时需要的 3 个文档同步到 runtime/assets/docs/ 并在 manifest 中声明,或删除这些引用并把必要规则移入已交付的契约/技能内容。


已根据 review 意见更新 PR,force-push 重建了分支。修复清单:
| # | 级别 | 问题 | 修复 |
|---|---|---|---|
| H3 | 高 | validate-artifacts-contract.py ROOT 未定义 | 改为双布局检测:CONTRACT_PATH 自动选择源仓 vs 发布路径 |
| M6 | 中 | 依赖 PR #308 的 workspace.yaml | workspace.yaml 移到本 PR,不再依赖 #308 |
| M7 | 中 | validate-artifacts-contract.py 不可执行 | 文件模式改为 100755 |
| M8 | 中 | skills 引用缺失的 docs/ | 新增 runtime/assets/docs/(adapters.md, template-injection.md, contracts.md),skill 引用从 {{PLUGIN_ROOT}}/docs/ 改为 {{ASSET_ROOT}}/docs/ |
源仓变更:oshunter/ohos-delivery-kit fix/upstream-review 分支


[medium] workspace 注册了不存在的 ohos-sdd 插件路径
问题:.ohos-agent/workspace.yaml 第 9 行注册了 id: ohos-sdd,指向 workflows/ohos-sdd/plugin.yaml,但该 PR 分支完整文件树中不存在 workflows/ohos-sdd/ 目录或 plugin.yaml。
影响:该 workspace 是 ohos-agent 的源工作区入口,构建/投影工具按清单加载插件时会遇到缺失路径,影响本 PR 新增 ODK 插件的整体发布入口。
建议:删除该未随 PR 提供的 ohos-sdd 条目,或在同一 PR 中补齐 workflows/ohos-sdd/plugin.yaml 及其插件目录。


[medium] skill 引用的模板根路径与 manifest 发布路径不一致
问题:本行使用 {{PLUGIN_ROOT}}/templates/ 引用模板路径,但 plugin.yaml 将 templates、profiles、contracts 注册到 runtime/assets/...(通过 ASSET_ROOT: runtime/assets),实际文件也只存在于 runtime/assets/templates/、runtime/assets/profiles/、runtime/assets/contracts/ 下。{{PLUGIN_ROOT}}/templates/ 路径在安装后不存在。
影响:ODK 基础命令会按不存在的路径读取模板和 profile,导致运行时失败。类似问题也存在于 using-odk-bridge 及多个 phase skill 和 bridge skill 中。
建议:将 skill 内所有运行时资产引用统一改为 {{ASSET_ROOT}}/templates/、{{ASSET_ROOT}}/profiles/、{{ASSET_ROOT}}/contracts/、{{ASSET_ROOT}}/adapters/。


[low] passthrough 输出路径未纳入 ODK artifact contract
问题:passthrough 模式将验证输出写入 .codespec/changes/<id>/validation.md,但 ODK archive 在 using-odk/SKILL.md 和 runtime/assets/contracts/artifacts.yaml 中定义的主/可选产物不包含该路径。review/validation 证据约定在 evidence/reviews/ 和 evidence/gates/。
影响:odk-validate 不会检查 validation.md,用户可能以为 MatrixSpec validation 已进入最终归档证据链,但实际未被归档校验覆盖。
建议:将 passthrough 输出路径改为 .codespec/changes/<id>/evidence/reviews/validation.md,或在 contract 中正式声明并校验 validation.md。


已根据最新 review 意见更新 PR(force-push):
| # | 级别 | 问题 | 修复 |
|---|---|---|---|
| M1 | medium | {{PLUGIN_ROOT}} 未转换为 {{ASSET_ROOT}} |
全局替换 16 个文件中 27 处 {{PLUGIN_ROOT}} → {{ASSET_ROOT}} |
注:{{EXECUTABLE_ROOT}} 不需要替换——它已在 plugin.yaml variables 段声明为 runtime/executables,是合法的 oh-skillhub 变量。
L1(PR comment V1 描述过时):PR body 已更新为 V2 描述,comment 是历史记录不再修改。
L2(workspace.yaml 跨 PR 引用):两 PR 同时合入即可,已知设计。
验证:{{PLUGIN_ROOT}} 残留 0 处,{{ASSET_ROOT}} 28 处。


[medium] workspace 仍注册了不存在的 ohos-sdd 插件路径(第二轮仍未修复)
问题:第一次检视已指出该问题,本轮确认仍未修复。.ohos-agent/workspace.yaml 第 9 行的 ohos-sdd 条目指向 workflows/ohos-sdd/plugin.yaml,当前 PR 分支和仓库基线均不存在该文件或目录。
影响:workspace 是 ohos-agent 源工作区入口,构建/投影工具按清单加载插件时会遇到缺失路径。
建议:删除该条目,或在同一 PR/base 中补齐 workflows/ohos-sdd/plugin.yaml 及其插件目录。


[low] passthrough 输出 validation.md 仍未被 ODK artifact contract 覆盖(第二轮仍未修复)
问题:第一次检视已指出该问题,本轮确认仍未修复。passthrough 模式写入 .codespec/changes/<id>/validation.md,但 ODK archive 在 artifacts.yaml 中定义的主/可选产物不包含该路径,review/validation 证据约定在 evidence/reviews/。
影响:odk-validate 不会检查 validation.md,归档校验不会覆盖 MatrixSpec validation 证据。
建议:将 passthrough 输出路径改为 .codespec/changes/<id>/evidence/reviews/validation.md,或在 contract 中正式声明并校验 validation.md。


已根据第二轮 review 更新 PR(force-push):
[medium] workspace.yaml ohos-sdd 引用 — 已修复
workspace.yaml 移除 ohos-sdd 条目,本 PR 只声明 ohos-delivery-kit。PR #309 现在自包含,不依赖 PR #308。
plugins:
- id: ohos-delivery-kit
path: workflows/ohos-delivery-kit/plugin.yaml
当 PR #308 也合入后,可通过后续 commit 在 workspace.yaml 中追加 ohos-sdd 条目。
[low] passthrough validation.md 未纳入 contract — 已修复
odk-ms-validation/SKILL.md 中 passthrough 输出路径从 .codespec/changes/<id>/validation.md 改为 .codespec/changes/<id>/evidence/reviews/validation.md,与 ODK artifact contract 的 evidence 目录约定对齐。


已根据 V3 review 更新 PR(force-push):
| # | 级别 | 问题 | 修复 |
|---|---|---|---|
| M2 | medium | provenance commit 过时 | 9b46a7c → 4a2cae2(dev HEAD),更新 commitDate 和 importedAt |
PR #308 和 PR #309 零文件重叠,合入无冲突风险。workspace.yaml 仅声明 ohos-delivery-kit(PR 自包含),两 PR 都合入后追加 ohos-sdd 条目。


源仓 PR 已合入:oshunter/ohos-delivery-kit PR #81 已合入 dev(commit 4a2cae2)。本 PR 内容与源仓 dev 最新一致。docs/ 引用已移除(skill 自包含),bridge 插件提示已加入 using-odk。