Skip to content

Commit 5d3bdc0

Browse files
committed
docs: 生态验收 —— 用发布出去的那份重跑一遍,并记下 .2 的那处不足
「本地构建能跑」和「用户装到的能跑」是两个断言,所以按 xlings 生态路径重做: install -> use -> 版本核对 -> imgui 双项目(含缓存命中那格) -> 标签与 rule E。 ⚠️ `xlings install` 不会自动切换已装的旧版本,它会明说;只看 install 的成功输出 就以为切过去了,是这一步最容易的误读。 顺带把 .2 与 .3 在同一个真实工程上的差别写下来:.2 的那道门读根 manifest, 而真实工程的能力来自依赖 —— 这正是本 PR 修的东西,现在有了现场对照。
1 parent 2850788 commit 5d3bdc0

1 file changed

Lines changed: 59 additions & 0 deletions

File tree

.agents/docs/2026-08-10-graphics-closure-acceptance.md

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -238,6 +238,65 @@ PASS: 215_pack_has_no_build_machine_paths.sh ← shard 2
238238

239239
---
240240

241+
---
242+
243+
## 7. 生态验收(用**发布出去的**那份,不是本地构建)
244+
245+
发布之后按生态路径重做了一遍 —— 因为「本地构建能跑」和「用户装到的能跑」是两个断言。
246+
247+
```console
248+
$ xlings update && xlings install mcpp@2026.8.10.2 -y
249+
✓ xim:mcpp@2026.8.10.2 done
250+
xim:mcpp@2026.8.10.2 installed, but 'mcpp' still resolves to 2026.8.8.2
251+
$ xlings use mcpp 2026.8.10.2
252+
[xlings] mcpp -> 2026.8.10.2 (xim:mcpp 2026.8.8.2 -> 2026.8.10.2)
253+
$ mcpp --version
254+
mcpp 2026.8.10.2
255+
```
256+
257+
> ⚠️ `install` **不会**自动切换已装的旧版本,它会明说。只看 `install` 的成功输出
258+
> 就以为切过去了,是这一步最容易的误读。
259+
260+
用这个生态装出来的 mcpp 重跑图形验收:
261+
262+
|| 结果 |
263+
|---|---|
264+
| imgui 模板 A(缓存 MISS) ||
265+
| imgui 模板 B(缓存 **HIT** —— #405 的那一格) |`Cached imgui v0.0.6 (9 units)` |
266+
| 产物标签 | ✅ 可执行 `DT_RPATH`,11 个库全 `DT_RUNPATH`,rule E 零 violation |
267+
| `artifacts` | `[]` —— 环境未声明,报 `NOT_DECLARED`(见 §3) |
268+
269+
### 顺带验到 2026.8.10.2 的一个不足(已由 2026.8.10.3 修)
270+
271+
同一个 imgui 工程,`mcpp pack --mode self-contained`:
272+
273+
```console
274+
# 生态里的 2026.8.10.2
275+
Packed b-0.1.0-x86_64-linux-gnu-bundle-all.tar.gz ← 照打不误,也没有 HOST-REQUIREMENTS
276+
277+
# 带 .3 修复的构建
278+
error: --mode self-contained cannot be used by a program that needs the host to
279+
provide abi:glibc, opengl.glx.driver, x11.display.
280+
use: --mode vendored — …
281+
```
282+
283+
原因:`.2` 的那道门读的是**根 manifest**,而这条能力来自依赖
284+
(`capability:opengl.glx.driver <- compat.glfw@3.4`)。**真实工程恰恰是这个形态。**
285+
`216` 的 fixture 当时在根工程声明能力,所以它通过的理由比它声称的范围窄 ——
286+
这一轮反复写的那条判据,这次落在自己头上。已改成依赖声明 + 前置断言。
287+
288+
### 身份判决的渲染也验了(环境没声明,就自己造一个)
289+
290+
符号链接仍指向 `0.1.1`、声明 `xim:vendor@0.1.2`:
291+
292+
```
293+
artifacts:
294+
- library …/current/lib/libvendor.so <- … [xim:vendor@0.1.2; identity=mismatch]
295+
^ STALE BINDING: this resolves into a different version than the one declared.
296+
```
297+
298+
正是设计里描述的那一格,而且是纯路径事实 —— 不需要认识 GL。
299+
241300
## 附:今天重复了三次的同一条
242301

243302
> **要说"验过了",先说清楚验的是哪一片。**

0 commit comments

Comments
 (0)