# 十月第二轮开发与审查（2026-10-03）

## 【1. 总体评价】

核心是 RFC 6570 展开库，边界明确。本轮增加目录迁移报告和混合请求审查两项能力。确认并修复 `catalog_batch.mbt` 中 `expand_requests` 先构造某条 URI 再拒绝总预算的问题：原路径可能临时分配超过调用方总输出预算的单条结果；现在复用 `measure_requests`，全部通过才生成输出。预检仍编码输入，不能称零分配。

申报资料稿为 20 行，参赛者与联系方式空白；资料需要申请人按章程人工定稿。公开远端、最新远端 CI 和 Mooncakes 发布未在本地完成，不能据本轮本地通过宣称赛事验收通过。修改前的实现及材料保存在 `docs/archive/20261002` 和 `docs/archive/20261003`。

## 【2. 算法与性能分析】

- 目录比较：遍历新旧目录，以名称映射查找模板，变化项复用契约比较；期望时间 O(C_old + C_new + ΣD)，D 为变化模板契约分析成本，输出空间 O(变化报告大小)。字面量变动同样记为变化，不证明兼容。
- 多请求审查：预先累计绑定数量，再逐请求调用既有诊断；期望时间 O(请求数 + 总绑定数 + 被审查模板的变量/段数量)，临时空间包括单模板诊断、映射及完整输出。max_findings 限制最终结果，单请求诊断仍可能先分配；输入和模板限额共同约束其成本。
- 方法名称：先精确计量再展开。计量不构造最终 URI，复用编码语义和预算检查；展开约增加一轮输入遍历，适合有明确内存/输出上限的批处理。成功结果仍占 O(总输出)，失败不会先构造 URI 数组。

## 【3. 具体优化步骤】

1. 保留原始文件，新增独立迁移与审查模块，避免扩大解析器职责。
2. `expand_requests` 先调用计量器，预算或请求错误立即返回，再进入输出循环。
3. 目录报告保留新增/删除与字面量变化，使用可复制结果访问器。
4. 审查报告只存请求位置、名称和变量问题，检查请求、绑定与发现数量。
5. 增加场景示例及 CI 步骤，生成公开接口，格式化并跑回归。

## 【4. 推荐修改后的代码】

实际实现见 `catalog_migration.mbt`、`catalog_request_audit.mbt` 和 `catalog_batch.mbt`；集成示例 `examples/maintenance/main.mbt`。

```text
measure_requests(requests, budgets) -> error 则返回
对每个 request 执行 expand，收集已满足总预算的输出
```

## 【5. 测试建议与已执行证据】

- 正常：新增/删除/修改目录、批处理计量与实际输出一致。
- 边界：相同目录、仅字面量变化、空请求、零发现预算、缺失变量允许省略。
- 异常：未知端点、复合值用于 prefix、重复/无用绑定、请求和绑定超预算。
- 新增测试 `catalog_migration_test.mbt` 4 项；完整四后端各 119 项通过。
- `moon check --target all --deny-warn`、`moon build --target all --deny-warn` 通过；新示例 wasm-gc 通过。
- 性能后续建议：对 1/100/1000 端点目录及多组复合参数记录分配量，比较成功展开成本与拒绝超大批次的峰值；本轮没有声称取得定量加速。
