Package Readiness Summary 怎么读
artifacts/package-readiness/runtime-package-readiness-summary.md 汇总 managed、bridge、consumer、主机依赖和 runtime smoke。2026-07-30 之后,历史 full/vendor package 字段只用于解释旧证据,不再是可打包或可发布条件。
当前优先字段
阅读每个 runtime key 时,按以下顺序判断:
- managed package 是否存在且不含
runtimes/*/native。 .Bridgepackage 是否存在且只含一个项目自有 bridge binary。- managed 与 bridge 是否来自同一 repository commit。
- consumer root 是否在仓库外,是否只用
PackageReference。 - 包来源是否为公开 URL/source,下载 hash 是否与渠道 digest 一致。
- TensorRT/CUDA/cuDNN/NVRTC 是否明确标记为机器安装依赖。
- restore/build/enqueue/readback 是否实际执行且 exit code 为 0。
- runtime JSON、stdout、stderr 和 nupkg SHA256 是否可复算。
- 是否存在 post-publish clean consumer 与 Owner 审核。
三层状态
Package completeness
只说明 managed 与 bridge 包的 identity、内容、版本和 hash 完整。它不证明主机依赖可加载,也不证明 TensorRT enqueue 成功。
Consumer build
说明仓库外项目可以 restore/build,并把 bridge 复制到输出目录。它仍可能只是 build-only 或 dependency-probe-only evidence。
Runtime execution
需要真实 TensorRT/CUDA 初始化、engine build/deserialize、enqueue、output readback 和结果验证。driver/runtime incompatibility、异常或 skipped output 都不能写成通过。
Callback-State 诊断
bridgeRuntimeConsumer.callbackStateSnapshot 从每条 runtime key 对应的
bridge-package-runtime-consumer-proof.json 汇入正式 readiness JSON/Markdown。它把 aggregate snapshot 分为:
complete:complete与snapshotIsComplete都为 true,且lastStatus=Ok;partial:两个 complete 标志都为 false,lastStatus非Ok,并保留非空lastOperation;incoherent:报告自称 coherent,但 complete/status/phase 组合不满足上述任一契约;missing:旧报告尚未包含 callback-state 字段。
TRT10/TRT11 的 vendor 默认 debug listener metadata 可能得到
snapshot-debug-listener-interface-info-partial。这种 coherent partial 是 pointer-free 诊断,不是 callback invocation、
public-package 或 post-publish proof。readiness 还保留 negative-control scenario/requested/passed,负例即使按预期失败也不会被
升级为 runtime success。
Release Evidence 中的 Callback 汇总
eng/Export-BridgeCallbackRuntimeEvidenceSummary.ps1 只读 TRT10.11/CUDA12.9 与 TRT11.0/CUDA12.9 的
bridge-package-runtime-consumer-proof.json,生成
artifacts/final-release/bridge-callback-runtime-evidence-summary.json / .md。每条线必须同时满足:
- success report 的 runtime execution 与 local-package callback proof 为 true;
- callback-state 已观察、coherent、pointer-free,complete 与 partial 都允许,但状态组合必须由源报告负责;
- callback 已 attach、安装 native vtable、真实 invocation 大于 0;
- failure 与 in-flight 都为 0,clear/detach 成功;
source-tree、public-package、post-publishscope 不得被本地包报告误置为 true;canPromoteRuntimeProof、canPublishPublicly、canCloseReleaseIssue保持 false。
摘要中的 sourceReportsContainRuntimeExecutionProof=true 和
sourceReportsContainLocalPackageCallbackRuntimeProof=true 表示源报告已经证明对应本地包执行;摘要本身没有执行 callback,
所以 isRuntimeExecutionProof=false。Export-ReleaseEvidenceBundle.ps1 只读消费该摘要,不会把本地 feed 提升为公开包、
post-publish、发布授权或 release close proof。
GitHub Release 路线
GitHub Release 不是 NuGet feed。下载 managed 与 bridge .nupkg 后,先验证:
- immutable asset URL;
- GitHub
sha256:digest; - 实际文件 size/SHA256;
- package id/version;
- nuspec repository URL/commit;
- bridge-only native entries。
验证后的资产可以进入隔离 restore staging,但这不是 locally built package feed,也不能改成 direct .nupkg 或 DLL 引用。
managed 与 bridge commit 不一致时,严格模式必须拒绝。-AllowCrossCommitPair 只产生 diagnostic-only 记录,即使发生了部分 runtime 调用也不能晋级 proof。
主机依赖
主机 dependency report 应记录:
GPU / driver
TensorRT root and runtime version
CUDA root and runtime/driver version
cuDNN root and version
NVRTC path/version when used
这些文件可以参与主机诊断和 hash inventory,但永远不能出现在 nupkg asset listing 中。
历史字段
旧 summary 可能包含 split collection、full consumer、full vendor inputs 或 vendor blockers。这些字段只说明旧版打包链当时观察到什么,不能驱动当前 pack/push,也不能替代 bridge-only policy gate。看到旧字段为 ready 时,不得推导当前公开包已发布或 runtime proof 已完成。
常见误读
以下结论都不成立:
overall=ready等于所有 runtime 行都可发布;- package restore/build 等于 TensorRT runtime proof;
- dependency probe 找到 DLL 等于 enqueue/readback;
- 本地 feed 等于公开包消费;
- 跨提交 managed/bridge pair 等于同一发布候选;
- 一条 Windows 记录覆盖 Linux 或另一 CUDA/TRT 行;
- 绿色 dashboard、文章或截图可以替代原始日志/hash。
当前发布闭环以 eng/Test-ExternalVendorRuntimePackagePolicy.ps1、公开资产独立验证、clean consumer、post-publish validator 和 Owner 决策为准。