Skip to content

Commit ba09a01

Browse files
speak-agentclaude
andcommitted
the end-to-end reading: one requirement, two implementations, two answers
Against the published implementations, a package stating `requires-interfaces = ["openkal.space"]` builds on Linux and is refused on Windows before anything is compiled --- because openkal-linux provides fifteen interfaces and openkal-windows fourteen, and the refusal names which, whose, and how many. This is the first instance of the reason SPEC clause 3.3 gives for withdrawing `hosted`: a name for a class of environment would have made these two implementations look alike. Also recorded: `mcpp index update` reports `index updated` while leaving the artifact sha where it was. Clearing the cache marker was not enough; the directory had to go. The criterion is the sha in `.xlings-index-version`, not the command's exit code and not the line it prints. Co-authored-by: Claude Code <noreply@anthropic.com>
1 parent 061c3fa commit ba09a01

1 file changed

Lines changed: 47 additions & 0 deletions

File tree

.agents/docs/2026-09-20-ecosystem-execution-plan.md

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -158,3 +158,50 @@ d9d24a49fc6f76c2.dm __riscv=1 __linux__=0 __SIZEOF_WCHAR_T__=4
158158
**正确的**,因为那里宿主就是目标。区分两者的是第一行:freestanding 的探针此前也长这样。
159159

160160
这条读数是「探针量的是它要核对的那个目标」这句话的产物级证据,不是日志级的。
161+
162+
### 4.7 端到端:同一条需求在两个实现上给出不同答案
163+
164+
登记发布之后,对**已发布的**实现实测一次。工程只写一条需求,按目标解析不同的实现:
165+
166+
```toml
167+
[target.'cfg(linux)'.dependencies]
168+
openkal-linux = { version = "0.15.0", features = ["standalone"] }
169+
[target.'cfg(windows)'.dependencies]
170+
openkal-windows = { version = "0.10.0", features = ["standalone"] }
171+
172+
[kernel-abi]
173+
requires-interfaces = ["openkal.space"]
174+
```
175+
176+
读数:
177+
178+
```
179+
=== Linux ===
180+
Cached openkal-linux v0.15.0 (17 units)
181+
Finished dev [unoptimized + debuginfo]
182+
183+
=== Windows ===
184+
error: 'idx-probe' requires interfaces the resolved implementation does not
185+
provide. [interface-not-provided]
186+
openkal.space
187+
provided by openkal-windows (14 interfaces)
188+
```
189+
190+
**同一个包、同一条需求,在一个目标上构建、在另一个目标上于编译任何东西之前被拒绝**,
191+
而拒绝点名了缺的接口、要它的包、没提供它的实现和它提供的个数。
192+
193+
这是整轮最强的一条证据,也是 SPEC §3.3 撤回 `hosted` 的理由的第一个实例:
194+
**一个给环境类别起的名字,会把这两个实现藏成一样。**
195+
196+
链条的每一环都在这条读数里:清单由产物生成(openkal CI 的 diff)、登记进索引
197+
(mcpp-index#445)、在解析期被读(mcpp#678)、拒绝带着可被机器读的码
198+
(`[interface-not-provided]`,mcpp-index 的测量按它区分 `refused``fails`)。
199+
200+
### 4.8 索引陈旧的又一层
201+
202+
`mcpp index update``index updated`,而 `~/.mcpp/registry/data/mcpplibs/.xlings-index-version`
203+
仍停在旧 artifact。删掉 `.xlings-index-cache.json``.mcpp-index-updated` 都不够;
204+
删掉整个 `mcpplibs/` 目录重取才拿到新的 `cf36e1e`
205+
206+
判据只能是那个文件里的 artifact sha,不能是命令的退出码,也不能是它打印的那句
207+
`index updated`

0 commit comments

Comments
 (0)