Skip to content

Commit 58294b4

Browse files
committed
docs: record the #254 cross-build e2e coverage gap honestly
The planned mingw-cross e2e consuming an xpkg dep with per-OS sections did not land: it needs a real cross build inside a throwaway MCPP_HOME, and a fresh home re-installs the entire cross toolchain (measured >10 min). The e2e harness has no fixture for reusing the host registry while injecting a local index and a pre-placed payload. Rather than ship a test that times out, the semantics stay pinned by three unit tests and the gap is written down in both the design doc and the changelog, with what building the fixture would take.
1 parent 8aa42f7 commit 58294b4

3 files changed

Lines changed: 5 additions & 128 deletions

File tree

.agents/docs/2026-07-22-v0.0.102-batch-254-261-design.md

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -431,9 +431,10 @@ class TargetPlatform { public: static TargetPlatform from_triple(std::string_vie
431431
432432
### 6.3 验收(零行为变化必须被锁死)
433433
434-
- **e2e:host == target ⇒ 拼接结果逐字节不变**。这是本节点的安全网:native 三平台 CI 的全部现状必须不变。
435-
- e2e:mingw-cross 腿消费一个带 per-OS `mcpp` 段的 xpkg dep,断言选中 **windows** 段(今天会错选 linux 段)。现有 cross e2e(`102_mingw_cross_wine.sh`、`112_build_mcpp_cross.sh`)都不消费此类 dep,这是新增覆盖。
436-
- 单测:轴类型互传不可编译(`static_assert(!std::is_convertible_v<...>)`)。
434+
- **单测:host == target ⇒ 拼接结果逐字节不变**(`NativeBuildSpliceIsUnchanged`)。这是本节点的安全网:native 三平台 CI 的全部现状必须不变。
435+
- 单测:逐 target OS 断言只拼接自己那一段、不携带另两段(`XpkgPerOsSectionSplicesForTheTargetNotTheHost`)。
436+
- 单测:轴类型互传不可编译(`static_assert(!std::is_convertible_v<...>)`),且都不能由裸字符串构造。
437+
- **已知覆盖缺口(实施期记录)**:原计划的"mingw-cross 腿消费带 per-OS 段的 xpkg dep"e2e **未落地**。该用例需要在一个临时 `MCPP_HOME` 里完成真实交叉构建,而临时 home 会触发整套交叉工具链的重新安装(实测超 10 分钟),现有 e2e 基础设施没有共享工具链、注入本地索引与预置 payload 的组合手段。折中:语义由上述两条单测精确锁定;真实交叉构建路径由既有 `102_mingw_cross_wine.sh` / `112_build_mcpp_cross.sh` 覆盖(但它们不消费此类 dep)。**若要补齐,需要先给 e2e 增加"复用宿主 registry + 项目级本地索引 + 预置 payload"的夹具**,单独做。
437438
438439
### commit
439440

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
### 备注
2626

2727
- 新增不变量写入批次总账:**任何"因条件不满足而少做一步"的分支,必须要么返回错误,要么经 `diag::degraded` 上报;`log::debug`/`log::verbose` 不算用户可见;丢弃 `std::expected` 返回值视为缺陷。**
28+
- **#254 的覆盖是单测级**:per-OS 段按 target 选段、host==target 逐字节不变、轴类型互不可转,三条单测锁定;原计划的"cross 腿消费带 per-OS 段的 xpkg dep"e2e 未落地(需要 e2e 侧先有"复用宿主 registry + 本地索引 + 预置 payload"的夹具,临时 MCPP_HOME 会触发整套交叉工具链重装),记为已知缺口。
2829
- e2e 新增 148(64 个 include dir 的宽 include 表,POSIX 验内联形态、windows 验 response file)、149(条件段 per-glob flags 四象限:命中生效/覆盖 base 的 removal/非命中零告警/真死 glob 仍告警)、150(#256 canary);118 去掉 `# requires: gcc` 并加 clang 腿。
2930
- **未包含**:#259(根因在 xlings 侧的 dep 静默丢弃,调查结论已发 issue 评论;mcpp 侧另发现 sysroot 兜底是死代码——`resolve_xpkg_path("xim:glibc")` 缺版本必然失败且两处都丢弃返回值——一并另行安排);manifest 未知键策略五处不一致([#263](https://github.com/mcpp-community/mcpp/issues/263),有兼容性面,与 #258 无依赖)。
3031

tests/e2e/151_cross_per_os_xpkg_splice.sh

Lines changed: 0 additions & 125 deletions
This file was deleted.

0 commit comments

Comments
 (0)