Skip to content

Commit f7d0fbf

Browse files
speak-agentclaude
andcommitted
the refusal-token table gains the four it was missing
c-env-unrealisable, c-env-verification-mismatch and platform-dependency have been emitted since 2026.9.18.1 and were never listed, so a program classifying an outcome read them as `other` --- the token the table itself describes as "a refusal whose branch has not been given a token yet". interface-not-provided joins them, together with the note that it is the one token `mcpp build` also prints in its own message. Co-authored-by: Claude Code <noreply@anthropic.com>
1 parent 4f2d2d2 commit f7d0fbf

2 files changed

Lines changed: 24 additions & 1 deletion

File tree

‎docs/50-machine-output.md‎

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -412,8 +412,21 @@ a program classifying the outcome reads `reason`:
412412
| `package-cycle` | the dependency graph contains a cycle of packages; the message names its edges *(2026.9.16.1+)* |
413413
| `program-cxx-runtime-split` | a program or test that states a self-contained C++ runtime loads a C++ shared library of the build that couples to a shared one *(2026.9.16.1+)* |
414414
| `static-package-in-two-images` | a static package several images of the build reach, on a target where an image cannot use another image's copy *(2026.9.16.1+)* |
415+
| `c-env-unrealisable` | the resolved C library's `[c-abi]` declaration has no known realisation for this target, or the resolved compiler cannot carry one out *(2026.9.18.1+)* |
416+
| `c-env-verification-mismatch` | the probe compiled with the realised `[c-abi]` configuration disagrees with what was declared *(2026.9.18.1+)* |
417+
| `platform-dependency` | `[build] platform-dependencies = "refuse"` and a package in the graph brings a platform SDK *(2026.9.18.1+)* |
418+
| `interface-not-provided` | a package's `[kernel-abi] requires-interfaces` names an interface the resolved implementation does not provide *(2026.9.20.1+)* |
415419
| `other` | a refusal whose branch has not been given a token yet |
416420

421+
**One token is also printed by `mcpp build` itself.**
422+
`interface-not-provided` appears in the refusal's own message, in brackets, the
423+
way `E0006` does. A refusal that only a person can recognise forces every
424+
machine consumer to match prose, and prose a package's own compile error could
425+
coincidentally contain; the mcpp-index compatibility measurement tells "this
426+
graph does not supply what the member asked for" from "the member did not
427+
build" on exactly this token, and that distinction decides whether a member
428+
counts against a compatibility figure.
429+
417430
**Exit 0 whenever the question was answered, including "refused".** "Would
418431
this build, and if not why" is answered successfully by "no, because the row's
419432
pin is a capability". A non-zero exit means the query itself could not run.

‎docs/zh/50-machine-output.md‎

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,13 @@
55
**本章回答的那一个问题:**一个程序可以依赖什么、它怎样被版本化、以及协议怎样被
66
识别。
77

8-
**不在这里:**面向人的输出 —— 它不带任何兼容性承诺;以及退出码契约,那是
8+
**不在这里:**其中一个令牌也由 `mcpp build` 自己打印。** `interface-not-provided` 出现在拒绝消息
9+
里,用方括号包着,与 `E0006` 同一个约定。一条只有人能认出的拒绝,会逼迫每一个机器消费者
10+
去匹配散文——而那种散文,一个包自己的编译错误有可能恰好包含;mcpp-index 的兼容性测量正是
11+
靠这个令牌把「这个图不供给这个成员所要的」与「这个成员没能构建」分开,而这个区分决定了
12+
一个成员算不算进兼容率。
13+
14+
**面向人的输出 —— 它不带任何兼容性承诺;以及退出码契约,那是
915
[SPEC-003](../specs/exit-codes.md)。
1016

1117
mcpp 面向两类读者。本章是对第二类 —— **程序** —— 的契约。编辑器扩展、CI 脚本,以及任何解析 mcpp 输出的程序,
@@ -361,6 +367,10 @@ mcpp why toolchain [--target <triple>] [--toolchain <spec>] --format json
361367
| `package-cycle` | 依赖图中存在包的环;消息列出环上的边 *(2026.9.16.1+)* |
362368
| `program-cxx-runtime-split` | 声明了自含 C++ 运行时的程序或测试,加载了本次构建中耦合到共享运行时的 C++ 共享库 *(2026.9.16.1+)* |
363369
| `static-package-in-two-images` | 一个静态包被本次构建的多个映像到达,而在该目标上一个映像不能使用另一个映像里的副本 *(2026.9.16.1+)* |
370+
| `c-env-unrealisable` | 解析出的 C 库的 `[c-abi]` 声明在这个目标上没有已知的实现,或解析出的编译器做不到 *(2026.9.18.1+)* |
371+
| `c-env-verification-mismatch` | 用实现出来的 `[c-abi]` 配置编译的探针,与声明不符 *(2026.9.18.1+)* |
372+
| `platform-dependency` | `[build] platform-dependencies = "refuse"`,而图里有包带进了平台 SDK *(2026.9.18.1+)* |
373+
| `interface-not-provided` | 某个包的 `[kernel-abi] requires-interfaces` 点名了解析出的实现不提供的接口 *(2026.9.20.1+)* |
364374
| `other` | 一处还没有被命名的拒绝分支 |
365375

366376
**只要问题被回答了就退 0,包括答案是「拒绝」。** 「它能不能构建,不能的话

0 commit comments

Comments
 (0)