# 验证记录

## 0.4.0 编译顺序与安装接口（2026-11-14）

工具链继续固定为 `moonc 0.10.20+65efd5b93`、`moon 0.1.20261104`，并重新核对官方当前版本。Cflags 使用完整依赖图的稳定顺序，静态编译的私有字段在普通字段之后追加。新增回归覆盖分支次序、共享和私有边、切换查询根、重复参数、虚拟提供者及错误修复；四目标各127项核心测试通过。

实际0.4.0 ZIP在独立工作区通过10项公开接口消费者测试，包含新版元数据选择、字段大小写、诊断预算及私有边影响公开链接顺序。归档源码和消费者合计四目标各137项通过；53项文件加载场景由归档内脚本执行。仓库外安装的CLI通过119项检查，固定pkgconf对照为63＋124＝187项，另有158个固定种子输入。历史发行归档不覆盖。

系统差分现在严格比较全部七种参数模式在普通/静态查询中的规范化序列，16个正负探针校验规范化本身，11项自测检查验证脚本。目录 `check --json` 另与逐包参考 `--exists` 的聚合结果核对；原语料和缺依赖副本都执行。固定样本及其缺依赖副本共498项查询通过，系统安装语料数量及结果由对应 CI 附件记录。

以下各节保留当时版本的验证结果；其中旧的 Cflags 顺序和覆盖数量不代表0.4.0。

## 资源边界与失败路径（2026-11-13）

本轮使用官方当前发布的 `moonc v0.10.20+65efd5b93 (2026-11-05)`、`moon 0.1.20261104 (940aa18 2026-11-04)`，以 `moon version --all` 核对实际工具链。参考工具固定为 pkgconf 3.0.7。

解析器的文档累计展开预算为1,048,576个 UTF-16 code units，首次 `PC009` 立即停止该文档。解析诊断保留前100条，发生下一条时追加 `PC021` 并停止；inspect 不再把未解析尾部误报为缺失必填字段。诊断合并使用完整内容的哈希键并保持首次顺序。输入文件大小、总目录规模和进程内存仍是不同边界。

`scripts/verify-resource-limits.py` 的9个真实进程场景在 Windows 本地全部通过。每场景独立测量，以下为该次运行的单样本，包含启动和文件读取时间，不作为通用性能承诺。

| 输入与操作 | 墙钟时间 | 峰值工作集 |
| --- | --- | --- |
| 100,000行重复超限展开，无关包查询 | 0.523秒 | 22.49 MiB |
| 40,000行无效文本，依赖查询 | 0.049秒 | 9.51 MiB |
| 40,000行无效文本，目录检查 | 0.046秒 | 9.49 MiB |
| 150个展开文件，无关包查询 | 0.553秒 | 13.04 MiB |

大型诊断输入保留100条原始错误及一条 `PC021`；150个文件分别返回一条 `PC009`，无关有效包仍成功。双平台 CI 执行相同脚本并保留 `resource-limits` 附件，报告包含输入哈希、实际时间、峰值字节数及输出规模。

固定3.0.7差分确认并覆盖两类失败路径：动态链接查询需要验证私有依赖但不输出私有参数；版本及变量读取只验证所选根，不遍历依赖。独立副本删除公开依赖后120项、删除私有依赖后117项查询全部通过，分别产生28和14个原先成功、删除后因缺依赖失败的参数查询；原文件及 CLI 哈希保持。11个上游样本的扩展查询共261项通过，7个真实规范化探针包含顺序、私有重复和分组的负对照。

完整本地验证通过四目标各122项核心测试、117个安装后CLI场景、实际源码归档每目标128项源码及消费者测试、53个文件加载场景，以及独立CLI ZIP的11个运行场景。固定 pkgconf 对照为55＋124＝179项，另有158个固定种子输入；大图/展开边界、原生C/C++和8项适配检查通过。本机无法创建符号链接的场景在报告中记录原因，双平台 CI 继续覆盖各自可用的文件系统场景。

核心固定种子属性测试生成600个无环图，动态/静态共1,200次查询分别检查可达集合、参数次数和依赖者顺序；每个支持目标都执行该测试。真实静态链接检查包含公开三角、私有三角和跨层共享三图，本库及参考工具参数均能链接运行，错误顺序均被真实链接器拒绝。

系统语料揭示公开可达库之间的私有边也影响动态链接次序。动态查询现在在完整图有效时按全图排序后过滤私有包；6项新增测试覆盖直接/隐藏私有约束、分支次序、虚拟提供者及私有图错误回退，8组实际 CLI 输出与固定3.0.7逐项一致。135包语料的最大文档展开量为 `ruby.pc` 的1,144个 UTF-16单元；Cflags 已知顺序边界见 [兼容性检查](compatibility.md)。

系统语料 CI 在原目录和删除 `zlib.pc` 的副本上执行扩展矩阵，记录文档展开总量、完整 Libs 规范化序列、Cflags 序列一致率及真实失败路径。对应机器报告保存在 `ubuntu-system-packages` 附件，复现方法见 [兼容性检查](compatibility.md)。本轮修复属于主分支内容，MoonCakes 0.3.1及正式发行归档保持原版本。

## 依赖顺序与查询可靠性（2026-11-13，8fecc9f）

本轮继续使用 `moonc 0.10.20+65efd5b93`、`moon 0.1.20261104`。固定 pkgconf 3.0.7 复核确认：三角依赖需要把共享库放在依赖者之后；四种存在性/版本条件需要检查私有依赖；显式 sysroot 参与 `pc_sysrootdir` 展开，已带该前缀的路径不应再次添加。

链接查询改为迭代逆后序，编译查询保持已有广度优先顺序。新增三角、跨层共享、私有依赖、重复边和5,000层共享图回归。`scripts/verify-link-order.py` 在本机 GNU MinGW 编译器下实际构建两组静态库：本库与 pkgconf 参数均能链接并运行；改回旧顺序均在 `base_value` 处链接失败。它检查真实链接器行为，不仅比较参数字符串。

单个元数据文件的读取或 UTF-8 解码失败分别返回 `PC019`、`PC020`；无关文件不影响有效根查询，首个损坏条目仍保留搜索优先级。无法读取搜索目录仍返回明确 IO 错误。文本失败写入 stderr，不再输出部分参数；JSON 保留版本1协议。存在性/版本条件与编译查询一致地检查私有依赖。

文档累计展开限制为16,777,216 UTF-16 code units，单值边界仍为1,048,576；超限在继续分配前返回 `PC009`。这不是整目录或进程内存上限。修改公开文档或包集合后，缺失/非法版本及残留包名返回诊断，避免在查询中因 `unwrap` 中止进程；修复后下一次调用可见。

Windows 本地完整验证通过：四目标各103项核心测试，安装后CLI共96个场景；实际源码归档每目标109项源码及消费者测试、50个文件加载场景；独立命令行ZIP的11个真实运行场景。50项基础及依赖图差分加124项模板对照共174项，另有158个固定种子输入；大图/展开边界、原生C/C++和8项适配检查通过。本机符号链接因权限限制跳过，POSIX权限和符号链接场景交由CI验证，报告列明跳过原因。

Ubuntu CI 增加真实静态链接和已安装系统元数据差分；后者记录实际文件哈希、目录、工具版本，比较参数集合、退出码、版本与谓词，并独立检查链接顺序中的传递依赖。它不把自编图或配置模板记作系统安装语料，也不把不同重复参数与无依赖并列顺序都判为故障。运行入口与边界见 [兼容性检查](compatibility.md)，双平台实际状态以对应提交的 [CI记录](https://github.com/xmyd0915/moonpkgconfig/actions/workflows/ci.yml) 为准。

以上修复属于主分支未发布内容。MoonCakes0.3.1、历史标签与正式归档未改写；注册表版本仍使用原来的链接遍历，不能将主分支修复视为已发布修复。

## MoonBit 0.10.20 兼容性维护（2026-11-13）

2026-11-13 按 [官方下载入口](https://www.moonbitlang.com/download/) 与 [版本元数据](https://cli.moonbitlang.com/version.json) 核对当前发布通道，在独立安装目录执行 `moon version --all`。实际版本号摘录如下（省略安装路径）：

```text
moon 0.1.20261104 (940aa18 2026-11-04)
moonc v0.10.20+65efd5b93 (2026-11-05)
moonrun 0.1.20261104 (940aa18 2026-11-04)
```

Windows 工具链 ZIP 的 SHA-256 与官方校验文件一致，为 `bdff9a3b2d7c61a3adae2fe09221d3de63effc6cab28bfa0cbeb94fb0d529d79`；core 模块版本与编译器匹配。原安装与全局环境保持原内容，当前指南和双平台 CI 改为固定本次实际版本，历史验证仍保留当时的工具链信息。

旧源码在 `moon check --target all --deny-warn` 中因尾缀 `derive(...)` 的弃用语法诊断失败。使用官方 `moon fmt` 将五个文件的12处声明改为前置 `#derive(...)`；字段、可见性、枚举顺序与算法内容未改。迁移后四目标检查、构建及每目标89项核心测试通过。

Windows 本地完整验证结果：

- 实际主分支归档每目标95项源码及消费者测试、22个文件加载场景通过；正式 MoonCakes0.3.1在新项目中通过四目标检查、构建和每目标6项公开接口测试。
- 83个隔离安装 CLI 场景、独立 ZIP 的11个解压后运行场景通过；包内记录实际新工具链，安装与执行未改动源码，CLI JSON 协议保持原有行为。
- 162项 pkgconf 对照、158个固定种子输入、大图与展开边界、原生 C/C++ 闭环和8项适配检查通过。
- 固定 zlib、Expat 编译成功，三个0.3.1原生消费者通过故障定位、修复、真实运行与文件双向互操作。一次 MoonCakes 索引请求返回502而中断，保留失败记录后，复用已安装库重新运行通过；没有用本地主分支替换注册表依赖。
- 实验性多包工程完成12个步骤及3项测试，验证库包/黑盒测试的链接传播、元数据变化触发重编译、失败修复、空格路径与原文件哈希保留。该钩子的支持范围仍限于明确验证的工具链。

Ubuntu 与 Windows CI 使用同一固定新版本，继续覆盖全部声明目标、注册表消费者、真实原生示例和可下载命令行包；具体结果以相应提交的 [CI 记录](https://github.com/xmyd0915/moonpkgconfig/actions/workflows/ci.yml) 为准。本次维护不重新发布0.3.1，不修改历史标签与发行归档。

## 机器接口与独立命令行包（2026-11-10）

当前主分支统一命令的 Windows 隔离安装验证扩展到83个场景。新增部分检查 `inspect`、`query` 的成功、解析诊断、IO 和用法 JSON；元数据值、空变量、缺少变量、版本条件的 `null/false` 区分；虚拟提供者与公开/私有依赖的结构化路径。原有 `flags`、`entries` 内容按明确预期保留，旧入口与安装命令保持输出一致。报告仍为 `_build/verification/cli.json`。

Windows 完整验证继续通过四目标各89项核心测试、实际归档每目标95项测试、22个文件加载场景、162项 pkgconf 对照及158个固定种子输入；大图与展开边界、原生 C/C++ 闭环及8项适配检查通过。

`scripts/package-cli.py` 从实际 `moon install` 输出创建独立 ZIP，核对六个平铺文件与哈希，从该 ZIP 解压到仓库外的带空格目录，再清除 MoonBit 环境和 PATH 执行11个场景。Windows 本地通过帮助、三个子命令、链接顺序、带空格参数、损坏元数据和读取错误检查；运行后包内文件保持原内容。另以未提交源码触发 `--require-clean` 拒绝，失败报告没有保留旧成功下载包。

ZIP 包含实际源码提交、dirty 状态、源码摘要、工具链与平台信息，以及 MIT 和实际 core/x 依赖许可说明；本地开发包明确标记 dirty，CI 只生成干净提交的包。报告为 `_build/verification/cli-package.json`。Ubuntu 与 Windows CI 分别保留 `ubuntu-cli-package`、`windows-cli-package` 附件30天，状态以对应提交的 [CI 运行](https://github.com/xmyd0915/moonpkgconfig/actions/workflows/ci.yml) 为准；平台范围见 [下载说明](cli-download.md)。本轮未改变 MoonCakes0.3.1发行包和历史标签。

## 命令行安装与多包接入（2026-11-10）

本轮继续使用固定的 `moonc 0.10.16+b1a0e846e`、`moon 0.1.20261020`。核心库与注册表发行版本保持0.3.1；新增统一 CLI 和实验性工程适配属于主分支未发布内容。

Windows 本地完整验证通过四目标各89项核心测试、归档每目标95项源码及消费者测试、22个文件加载场景、162项 pkgconf 对照、158个固定种子输入、大图/展开边界和原生 C/C++ 闭环。

`scripts/verify-cli.py` 从 checkout 安装实际可执行文件到隔离目录，在仓库外清除 MoonBit 环境后通过33个场景。覆盖三个子命令、帮助与错误退出码、目录 JSON 的固定结构、空目录、Unicode/空格路径、有序及重复搜索路径、损坏首文件、共享诊断去重、私有依赖、读取失败、修复重载和旧入口输出一致性；安装及执行未修改源码。报告为 `_build/verification/cli.json`。

`scripts/verify-project-integration.py` 自动准备固定的静态 zlib、Expat，在仓库外的多包工程中通过12个构建、运行及预期失败步骤。三个库测试包含一项外部黑盒测试；两个入口分别验证单库和组合使用，检查实际链接命令的包依赖范围。已有自定义宏保持生效，损坏元数据立即返回原始 `PC004` 位置，修复后恢复；新增元数据宏使程序输出随重新编译改变，不需要重新配置规划器。

工程、规划器、元数据及真实头文件/库路径均包含空格。四个头文件和两个静态库只复制所需文件，源与副本哈希在构建前后核对一致；原始 `.pc`、工程源码、manifest 和规划器二进制均保持原内容。未知适配选项明确拒绝。报告为 `_build/verification/project-integration.json`；dry-run 只保留识别后的链接命令，不保存环境转储。

双平台 CI 执行同样的 CLI 安装和工程接入验证，并分别保存 `cli`、`project-integration` 附件。工程验证复用已有原生流程准备的库，具体状态以相应提交的 [CI 记录](https://github.com/xmyd0915/moonpkgconfig/actions/workflows/ci.yml) 为准。该接入依赖实验性 pre-build 钩子，支持范围见 [示例说明](../examples/project-integration/README.md)。

## MoonBit 0.10.16 迁移（2026-10-29）

当前开发与双平台 CI 固定使用 `moonc v0.10.16+b1a0e846e (2026-10-16)`、`moon 0.1.20261020 (2284bd2 2026-10-20)`。源码按新版格式化器调整 `Int`/`UInt` 类型名、默认参数写法及换行；参数计算、诊断和公开调用方式保持原行为。自动生成的 `pkg.generated.mbti` 不纳入版本控制和发行归档。

Windows x64 本地在隔离工具链下完成以下验证：

- 四目标检查、构建及每目标89项核心测试通过；实际主分支归档每目标95项测试通过，包含6项独立消费者测试，归档内另通过22个文件加载场景。
- 新项目从 MoonCakes 安装已发布的0.3.1，没有本地源码覆盖；四目标检查、构建及每目标6项公开接口测试通过。
- 162项固定 pkgconf 3.0.7 对照、64个有效输入、94个异常输入、大图与展开边界、C/C++ 原生闭环通过。
- Windows MSVC zlib、Expat 及既有0.2.0消费者通过；Expat 移除/恢复私有静态宏的负对照保持有效。
- `scripts/review-native.py` 准备固定静态依赖并构建三个0.3.1消费者；故障定位、修复、真实执行、4组文件双向互操作、64 MiB 边界和已有输出保护通过。Windows 本机符号链接检查仍因权限不足明确跳过，平台差异保留在报告中。

Ubuntu 与 Windows 工作流分别列出检查、构建、测试和0.3.1注册表验证步骤。各平台 `package-install` 附件包含主分支归档与注册表安装报告，原生报告继续保存在 `native-consumer` 附件中；运行状态以对应提交的 [CI 记录](https://github.com/xmyd0915/moonpkgconfig/actions/workflows/ci.yml) 为准。

本次迁移未重新发布模块。0.3.1的正式归档、标签及既有发布记录保留，以下历史记录仍使用各自验证时的工具链版本。

## 原生消费者更新（2026-10-23）

推荐模板使用已发布的0.3.1。Windows x64 MSVC 上，`scripts/review-native.py` 从本地固定归档准备静态 zlib、Expat，再将三个消费者复制到仓库之外完成注册表依赖安装和真实运行，全程65.3秒；此耗时不包含上游归档的首次下载。

zlib、Expat 均通过缺包、版本不符、损坏依赖 `PC004` 第1行第8列、修复后构建和直接执行检查。安装原件保持原内容；自定义构建配置被拒绝且原文件得到保留。Expat 保留私有静态宏、13项独立 XML 对照和4项 FFI 边界检查。

同一规划器与适配器还构建实际文件工具，空文件、文本、512 KiB 二进制文件和包含中文、空格、emoji 的文件名均通过往返及 Python zlib 双向互操作。64 MiB 正边界往返、超限输入与输出拒绝、损坏输入、已有文件与目录保护等共26次程序调用通过；Windows 本机因缺少符号链接权限明确跳过该项，POSIX 另执行确定性的并发创建输出检查。三个报告的规划器和适配器哈希相同。完整报告为 `_build/verification/native-walkthrough.json`；双平台 CI 使用同一入口，从网络下载固定上游归档。

Windows 隔离路径检查中，包含空格的 ASCII 工作目录完成两库静态准备；引用路径的元数据副本、4个头文件及2个静态库均核对一致，原安装 `.pc` 哈希不变。中文工作目录在 CMake 3.31.8、NMake、MSVC 19.51 的编译器自检中出现 PDB 路径编码损坏并以 `LNK1201` 失败，未进入库构建；运行说明据此建议这套工具使用 ASCII 构建路径。

## 核心与发行验证

最近验证：2026-10-17；核心回归平台：Windows x64 与 Ubuntu CI；真实 zlib、Expat FFI 平台：Ubuntu CI 与 Windows x64 MSVC；libpng FFI 平台：Ubuntu CI。

工具链：`moon 0.1.20260915 (2e1a46d 2026-09-15)`，`moonc v0.10.14+7d59c7ec9 (2026-09-18)`。

0.3.1增加损坏依赖诊断修复。89项核心测试与22个文件加载场景通过；两个通用模板消费者实际使用 MoonCakes 0.3.0。各版本归档、正式上传及注册表安装证据见 [发布记录](release.md)。

0.3.1发行候选已在 Windows 本机通过实际归档验证：四目标各通过89项源码测试及6项独立消费者测试，共95项；归档内另执行22个文件加载场景。版本与归档 SHA-256、命令结果写入 `_build/verification/package-install.json`。错误归档版本、与当前模块不一致的打包版本均被拒绝，旧成功报告会重置为失败状态。新增构建产物定位同时通过普通目录和独立工作区布局；已发布0.3.0仍在新项目中通过四目标各4项消费者测试。

2026-10-18正式上传0.3.1返回 `200 OK`、退出码0；最终上传包四目标各95项和归档内22个文件场景通过。上传后新项目实际下载0.3.1，四目标各6项消费者测试通过；上传 ZIP 与公开索引 SHA-256 一致。源码标签、归档校验值及版本状态见 [完成记录](release.md)。

通过 `scripts/verify.ps1` 执行：

| 检查 | 结果 |
| --- | --- |
| `moon fmt` | 成功 |
| `moon check --target all --deny-warn` | 四目标成功，无警告 |
| `moon test --target all --deny-warn` | 主分支 wasm 89/89，wasm-gc 89/89，JS 89/89，native 89/89；0.3.0发行源码仍为81项 |
| 损坏依赖原始错误 | 新增8项核心回归与22个文件加载 CLI 场景；验证原始文件/行列、静态私有模式、同名目录优先级、虚拟提供者、共享失败去重、版本失败的不可达子图及修复后重新加载。报告为 `_build/verification/load-diagnostics.json` |
| 0.3.0通用模板 | zlib、Expat 应用在仓库外分别验证缺失/版本失败与修复后构建运行；规划器及构建适配代码相同，参数指向实际安装。zlib 含空格路径、CRC-32、3次往返及3类错误；Expat 的13个解析结果由独立 Python 安装核对，另通过4项 FFI 边界检查。Windows 另验证未知适配选项被拒绝，报告为 `_build/verification/native-consumer-*.json` |
| `moon run cmd/demo` | 成功，输出六项字段及来源，无解析诊断 |
| `scripts/review-demo.*` | 来源解释、错误目录、sysroot与虚拟包范围四步演示均通过；成功/失败退出码均有断言 |
| `moon package --list` | 成功，包含核心源码、README、许可证与来源说明，不包含构建、工具或凭据文件 |
| 0.2.0 发布归档消费者 | 实际 ZIP 包含分类、路径、查询上下文与目录检查源码；在独立工作区四目标执行78项归档源码测试和3项消费者测试，验证公开 API 可导入并运行 |
| 0.3.0发行归档消费者 | 实际上传归档在独立工作区四目标执行81项源码测试和4项消费者测试，每目标85项通过；新增消费者直接导入并检查静态编译字段、依赖顺序及来源。已发布0.2.0归档保持原内容 |
| MoonCakes 0.1.0 历史复验 | 2026-09-28：`xmyd0915/moonpkgconfig@0.1.0` 可在全新临时模块中下载并通过 `moon check --target all --deny-warn` |
| MoonCakes 0.2.0 安装复验 | 2026-10-17：正式发布返回 `200 OK`；全新模块实际下载0.2.0，无本地源码覆盖，四目标检查和每目标3项公开接口消费者测试均通过；归档 SHA-256 与公开索引一致 |
| MoonCakes 0.3.0 安装复验 | 2026-10-17：正式发布返回 `200 OK`、退出码0；全新模块实际下载0.3.0，无本地源码覆盖，四目标检查和每目标4项公开接口消费者测试通过；含静态编译字段、依赖顺序和来源。上传 ZIP、测试归档与注册表索引 SHA-256 一致，源码标签为 `v0.3.0` |
| MoonCakes 0.3.1 安装复验 | 2026-10-18：正式发布返回 `200 OK`、退出码0；全新模块实际下载0.3.1，无本地源码覆盖，四目标检查和每目标6项公开接口消费者测试通过，含新增诊断映射、私有模式和提供者路径。最终归档的源码、消费者及文件场景均通过；上传 ZIP 与公开索引校验值一致，标签为 `v0.3.1` |
| `moon run --target native cmd/inspect examples/valid/imagekit.pc` | 成功，从磁盘读取并输出九项字段及来源，无解析诊断 |
| `moon run --target native cmd/inspect examples/valid/imagekit.pc --json` | 成功，输出完整条目与空诊断数组 |
| `moon run --target native cmd/inspect examples/invalid/broken.pc` | 按预期报告五项问题并返回退出码 1 |
| `cmd/query` 三种查询 | Cflags、动态 Libs、静态 Libs 均成功并通过精确输出断言 |
| `cmd/query` 五种参数分类 | 包含头文件目录、其他编译选项、库目录、库及其他链接选项；CLI 检查 JSON、来源解释、静态私有参数、带空格/分离式参数及错误退出码；GNU 链接器分组保持完整 |
| `cmd/query --dedupe-paths` | 连接式与分离式重复搜索路径按同一路径稳定去除；孤立选项不会跨包或字段绑定下一参数 |
| `cmd/query` 路径策略 | 显式系统目录过滤与 sysroot 重写通过精确输出断言；连接式/分离式参数均保留来源 |
| `cmd/query` 虚拟包范围 | 官方 `provides.pc` 的六种运算符按 pkgconf 3.0.7 比较矩阵解析；匹配与拒绝样例退出码一致 |
| `cmd/query` 参数引用 | 官方 `fragment-quoting.pc` 中含字面引号的宏参数按 POSIX shell 规则输出，并通过精确断言 |
| `cmd/query` 参数顺序 | 菱形依赖中 Cflags 包含公开/私有依赖，动态 Libs 只含公开依赖，静态 Libs 加入私有依赖；顺序与 pkgconf 3.0.7 一致 |
| `cmd/query --explain` | 每个参数显示包、字段、源码位置及从根包出发的最短公开/私有依赖路径 |
| 大图与边界工作负载 | 1,000包的长链、宽图、共享叶子和虚拟包图分别检查解析/参数/路径/整目录；5,000包长链检查解析、链尾路径及整目录；1,000包缺失依赖长链精确保留一条 `PC015`；6种展开边界按长度成功或返回 `PC009`。耗时仅记录，不作 CI 速度门槛 |
| 路径快照与深图回归 | 前驱索引保留最短路径、声明顺序、私有边、虚拟包和快照语义；5,000包长链四目标均通过，循环及独立错误的诊断顺序保持一致 |
| 原生性能测量 | Windows native release 的四种图、三种规模、六种操作各3次，另有深链及展开边界记录；范围、原始采样和剩余瓶颈见 [性能报告](performance.md) |
| 查询与目录优化 | 单次查询复用提供者候选和依赖步骤，有效子图复用检查判定；精确名优先、候选顺序、文档修改可见性、每根冲突集合及错误顺序通过回归。2026-10-17同机前后采样、内存变化和问题图边界见 [查询性能报告](query-performance.md) |
| `cmd/query` 查询隔离 | 同目录存在无关损坏文件时正常包仍可查询；直接查询损坏包会返回其原始诊断和退出码 1 |
| `cmd/query --json` 失败结果 | 损坏目标包仍输出可解析的 `flags`、`diagnostics` 对象，诊断为 `PC004`，退出码 1 |
| `cmd/query --path` | 首目录中的同名包获胜，后续目录可补足依赖；反转目录顺序会按预期改变选中版本 |
| `cmd/query` 元数据模式 | 版本输出、存在性、最低/最高/精确版本条件的输出及退出码与 pkgconf 3.0.7 对照一致 |
| `cmd/query` 变量模式 | 变量读取、调用方覆盖及覆盖后的依赖参数展开与 pkgconf 3.0.7 对照一致 |
| `cmd/check examples/valid` | 成功，检查 3 个包、0 项诊断，退出码 0 |
| `cmd/check examples/invalid` | 报告解析及公开/私有依赖问题，共 4 项诊断，退出码 1 |
| `cmd/check testdata/pkgconf-3.0.7` | 11个未经修改的官方pkgconf 3.0.7样本全部通过，退出码 0 |
| 原生 C/C++ 闭环 | 查询 `moonpkg-demo.pc` 得到参数，编译 C 静态库与 C++ 调用程序，运行输出精确匹配 |
| 真实 MoonBit zlib FFI | 从官方 zlib 1.3.1 发行包构建静态库，查询安装生成的 `zlib.pc` 并生成 MoonBit 原生配置；标准 CRC-32 向量、3种输入的压缩/解压及3种错误返回在 Ubuntu CI 和本机 Windows x64 MSVC 全部通过 |
| Windows zlib 安装与空格路径 | MSVC 14.51.36231、Windows SDK 10.0.28000.0、CMake 3.31.8；校验固定归档后以 `/MT` 构建安装，显式映射 `-lz` 到 `zlibstatic.lib`。原始安装及更新前缀、正确引用路径的独立副本均成功；同一命令接入 Windows CI |
| MSVC 示例适配边界 | 8项 Python 检查通过：连接/分离参数、引号与反斜线、库名映射和顺序、空结果、未知选项、缺失操作数、跨来源隔离与不支持的库名写法。检查属于示例构建脚本，核心仍返回原始参数 |
| 发布包文件工具消费者 | 自包含目录复制到仓库外，实际导入 MoonCakes 0.2.0 及文件适配接口；`PC015`、`PC016` 均定位到应用依赖声明第4行。修复后使用安装生成的 zlib 参数构建文件工具，空文件、文本、512 KiB 二进制往返及 Python zlib 双向互操作通过；损坏输入不生成结果，已有输出保持原内容。Windows 本机正确引用的空格库路径通过，同一流程接入双平台 CI |
| 真实私有依赖与 PNG | 官方 libpng 1.6.59 与 zlib 1.3.1 分别静态安装到不同前缀；查询普通/静态参数，验证缺失私有依赖时的退出码及 `PC015`，并在 MoonBit 中完成3组 RGBA PNG 像素往返和4种错误检查。当前示例未适配 Windows MSVC |
| 真实 Expat 静态编译 | 官方2.6.2发行包经固定 SHA-256 校验，由 CMake 构建静态库；安装元数据不改写。静态查询提供 `XML_STATIC`，MoonBit 完成9次正常/分块解析、4类错误输入及4项边界检查，Python独立安装核对计数、状态、错误和位置。MSVC 移除该私有字段复现 `__imp_XML_*` 链接失败，恢复后成功；报告为 `_build/verification/expat.json`，流程接入 Ubuntu 与 Windows CI |
| `cmd/check testdata/real-world` | zlib 1.3.1 与 libffi 3.4.6 固定上游模板全部通过，退出码 0 |
| 自动 pkgconf 差分 | 38 项 Cflags、动态/静态 Libs、五种参数分类、依赖顺序、路径策略、虚拟包、真实模板、版本、变量覆盖及退出码与固定的 pkgconf 3.0.7 一致；仅忽略行末空白差异 |
| 六项目模板差分与独立预期 | 六个固定提交的上游模板与完整许可证通过 SHA-256 校验；120项配置查询和4项跨包静态顺序与声明预期、pkgconf 3.0.7 一致，参数来源指回对应字段。包含0.3.0的 Expat `Cflags.private` 修复；原38项差分继续执行 |
| 固定种子输入检查 | 种子20261017：64个有效参数输入通过 Python shlex 参数数组与展示往返对照，含 CRLF/BOM/无末尾换行；94个异常/截断输入通过文件、静态编译和静态链接查询的 JSON/退出码/来源检查及抽样确定性检查，单进程20秒超时即失败。完整报告与输入保留于忽略目录 |
| GitHub Actions CI | 2026-10-17：0.2.0发行提交 `092d2fa` 在固定工具链的 Ubuntu 全新环境成功，含78个四目标核心测试、实际归档源码和3项消费者测试、分类 CLI 检查、26个大图/展开边界工作负载、评审演示、包内容检查、C/C++ 闭环、真实 zlib/libpng FFI、11个上游样本及38项固定版本差分；运行记录：[39004844362](https://github.com/xmyd0915/moonpkgconfig/actions/runs/39004844362)。9月首次发布的运行记录保留于 [36442570605](https://github.com/xmyd0915/moonpkgconfig/actions/runs/36442570605) |

主分支89个逻辑测试在四个目标各运行一次，按逻辑测试计数。覆盖顺序变量展开、调用方变量覆盖、未定义/自引用、字面美元符、命名空间与大小写、重复/保留定义、BOM/CRLF/注释/续行/Unicode、字段和值位置、包元数据校验、直接与传递依赖检查、全包检查去重及有效子图复用、最短公开/私有依赖路径和快照、5,000包深链/目录及诊断顺序、查询缓存刷新、精确包优先和虚拟候选顺序、损坏依赖原始诊断及共享失败去重、Cflags 私有依赖及静态私有字段语义、虚拟包范围比较矩阵、循环和每根独立包冲突诊断、参数聚合与来源、五种参数分类及 GNU 链接器分组、稳定的菱形依赖顺序、POSIX shell 参数边界、跨写法搜索路径去重、系统目录过滤、sysroot重写和来源边界、JSON 输出、参数引号/转义、版本分段比较、六种约束运算符及错误恢复、展开大小上限。

当前证据仅证明所覆盖子集。目录、系统路径和sysroot均由调用者显式指定，不读取宿主pkg-config环境；参数结果对照使用自编依赖图及六项目模板的明确配置副本，上游语料另包含11个固定的pkgconf官方测试文件。完整配置、种子与重现方式见 [兼容性检查](compatibility.md)。

独立文件消费者的机器可读报告保存于 `_build/verification/zlib-consumer.json`；双平台 CI 分别上传 `ubuntu-published-consumer` 和 `windows-published-consumer` 附件，包含两种失败诊断、修复后的参数来源、依赖路径和文件摘要。

## 对照工具与记录

0.3.0候选提交 `c372debb81b5a4b7447bc5a78d16bdbb7101b9ba` 的双平台 [CI 39025581516](https://github.com/xmyd0915/moonpkgconfig/actions/runs/39025581516) 成功：Ubuntu 包含81项四目标核心测试、4项四目标归档消费者测试、162项固定 pkgconf 差分、158个生成输入、真实 C/C++、zlib、libpng 和 Expat；Windows 通过 zlib、发布包文件消费者及 Expat 正/负对照。附件包含 `ubuntu-expat`、`windows-expat` 及既有兼容性和消费者报告。此为发布前候选验证记录。

正式发行提交 `19aa710b356fa33406e9ed8345b3143d4022e77f` 的双平台 [CI 39032073532](https://github.com/xmyd0915/moonpkgconfig/actions/runs/39032073532) 同样通过。0.3.0上传、标签、注册表下载安装和归档校验值见 [发布记录](release.md)。

诊断修复与通用模板提交 `3b997f698c2e4c8bbb48c7030f50181cf5701d02` 的双平台 [CI 39034141546](https://github.com/xmyd0915/moonpkgconfig/actions/runs/39034141546) 全部通过；已核对两个平台的附件，各含22个诊断场景及两个0.3.0消费者的缺失、版本失败、修复和真实构建结果。该记录早于0.3.1候选打包接口验证。

0.3.1发行提交 `c138e4fc23291f4441eec9eabecd34a8b451243d` 的双平台 [CI 39070804193](https://github.com/xmyd0915/moonpkgconfig/actions/runs/39070804193) 全部通过；已核对两平台的包报告、实际 ZIP 和源码内容，Windows CI ZIP 与正式上传包完全一致。保留162项 pkgconf 对照、158个输入场景、真实原生集成及既有版本消费者。

已下载并校验官方 pkgconf 3.0.7 Windows x64 MSI，发布资产 SHA-256 为 `7a316dba4a4498ea952b746c82deed41c597657095a0f776b75654191b45ae44`。对照结果和已知差异见 `docs/pkgconf-comparison.md`。

后续开发保持可追踪的提交和验证记录。
