## 依据 **ADR-040**(`alpha-code@5adce5b1`)「被否决的方案 C」明写: `opencode-plugin` profile 与配套的 `engine:config` / `engine:plugin` host capability **全部回滚**, **宿主 profile 集合回到四个**。 ## 范围 **只做合同层。** 行为层(七条写 `plugin[]` 的路径)归 `#825`,那张票在先。 回滚 `alpha-code@6126e69e` 引入的: - `profiles/opencode-plugin.v1.schema.json` - `decoder.ts` 的 opencode-plugin 解码臂与 capability 派生、`ScriptAssetRefV1` - `registry.ts` 的两个 capability token 与 profile 联合 - `host-extension-package.registry.v1.json` 的对应条目(profiles / capabilities / limits 里的 `maxScriptAssetBytes`) - corpus / testvectors 里的 plugin 向量 - `docs/contracts/host-extension-package-v1.md` 的相应段(**并把 profile/capability 计数改回真值**) - 重生 `host-extension-package-artifact.v1.json` **跨仓 pin 三跳搬运**(与 Phase 4 走过的四步窗口同形,方向相反): alpha-web 的 `generic-profiles` / `generic-rules`(把 `managed-plugin` 放回 `excluded`)/ `HOST_ARTIFACT` 表 / `HOST_REGISTRY_BYTES` / `host-contract-pin.v1.json` / `channels-ci.yml` 的 `ref:`, 以及 alpha-code 的 `alpha-contracts-consumer` vendored 副本 + lock。 ## ⚠️ 必须保住(勘破逐条点名,不许一起删) - **capability 文法正则的 `:` 支持**——若回滚后 registry 里不再有带冒号的 token, 文法可以收回原样;**但两处(decoder 与信封 schema)必须仍然逐字一致**, 且要有断言钉住这一点(不一致 = 合同说谎); - **`docs/verification/2026-07-31-req128-capability-matrix/matrix.tsv`** 的测试标题锚点 —— 它按标题字符串钉证据,改名会让 Phase 1 的已归档证据失效,**改之前先看它引用了什么**; - **`aw#112` 的资产字节前移**(随 `#811` 一起进来的,与插件无关); - **alpha-web 的 `buildPayload` 由隐式兜底改显式拒绝**(`#129` 带进来的,是真加固); - **`E_HOST_PARSER_DRIFT` 的修复**(`#129` 顺带修的,该 red 曾让 alpha-web 主线连红一天多)。 ## ❌ 不需要抢救(勘破实读修正了 ADR 初稿的一处错列) 「`#809` M1 卸载目录删不掉不再谎报成功」**不是无关修复** —— 实测回滚前的 `ext-package-uninstall.ts` 里 `rmSync` 与 `catch` **各零命中**, 那个空 `catch` 是**同一个 PR 第一版自己引入的**,连同 plugin 臂一起回滚即可。 ## Acceptance and named gates - `assertHostExtensionPackageRegistryV1()` 的三处 exact-set 回到四 profile / 三 capability, **且「悄悄加一个」与「悄悄删一个」两个方向各绕过一次**; - `host-extension-package-artifact.test.ts` 那条曾被翻正的断言**改回反向** (registry 不含 `opencode-plugin`)—— 它是防止它再悄悄回来的闸; - 跨仓 pin 搬运后 `assertVendoredHostContractPin` 四个 error code 路径全绿; - `bash scripts/alpha-check.sh` 全绿;**测试条数会下降,每一条下降都要在 PR 正文点名**。 ## 依赖 **`#825`(行为层封死)先落** —— 否则会剩下引用已删 profile 的生产代码。 ## 出处 ADR-040 被否决的方案 C;2026-08-03 全相位勘破 phase1 / parent-acs 两面给出的逐行边界。
Activity