skill-family-engineering-kit 0.11.0 → 0.13.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +41 -0
- package/CHANGELOG.zh-CN.md +41 -0
- package/README.md +19 -16
- package/README.zh-CN.md +25 -14
- package/SECURITY.md +2 -2
- package/data/hosts/claude/host-descriptor.json +5 -0
- package/data/hosts/codex/host-descriptor.json +5 -0
- package/data/hosts/qoder/host-descriptor.json +18 -4
- package/docs/agents/capability-catalog.en.json +137 -47
- package/docs/agents/capability-catalog.json +73 -21
- package/docs/agents/capability-catalog.zh-CN.json +137 -47
- package/docs/architecture/index.html +2 -2
- package/docs/en/architecture/index.html +2 -2
- package/docs/en/reference/compatibility/index.html +7 -7
- package/docs/integration/audit/index.html +2 -1
- package/docs/integration/audit/version-compatibility/index.html +3 -2
- package/docs/public/status/index.html +3 -3
- package/docs/recipes/host-profile-integration/index.html +6 -4
- package/docs/reference/api/contracts/index.html +1 -1
- package/docs/reference/api/engineering-kit/index.html +74 -5
- package/docs/reference/api/harness/index.html +72 -1
- package/docs/reference/compatibility/index.html +7 -7
- package/docs/search/search_index.json +1 -1
- package/package.json +3 -3
- package/profile-spi/extension-spi.json +1 -1
- package/release-notes/0.12.0.yaml +27 -0
- package/release-notes/0.13.0.yaml +17 -0
- package/src/host-verification-drivers.mjs +251 -5
- package/src/host-verification.mjs +156 -40
- package/src/index.mjs +2 -0
- package/src/plugin-verification.mjs +337 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,46 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
<!-- release-skill:changelog:start version=0.13.0 locale=en baseline=sha256:b9eed0b2361ff46c23ddd903b98b7059d9ceed8329f846010cb4a943101ec9a3 -->
|
|
4
|
+
## [0.13.0] - 2026-08-26
|
|
5
|
+
|
|
6
|
+
Engineering Kit 0.13.0 is a source candidate for complete plugin verification with separate installation, discovery and invocation facts.
|
|
7
|
+
|
|
8
|
+
### Added
|
|
9
|
+
|
|
10
|
+
- Adds the permanent candidate root entry runPluginVerification({ request, bindings, hostsRoot }).
|
|
11
|
+
- Preserves complete plugin layouts and exposes installation observations without taking over caller acceptance policy.
|
|
12
|
+
|
|
13
|
+
### Upgrade Notes
|
|
14
|
+
|
|
15
|
+
Pin the three packages together. Existing runHostVerification and verifyHostVerificationBindings remain available for single-Skill verification. Every actual host/source combination still needs qualification; no publication or consumer mechanism removal is implied.
|
|
16
|
+
<!-- release-skill:changelog:end version=0.13.0 locale=en -->
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
<!-- release-skill:changelog:start version=0.12.0 locale=en baseline=sha256:6000579dc8b473dbeda1832274d971df0c4f3a62a90c973184dd70e59ffc8602 -->
|
|
20
|
+
## [0.12.0] - 2026-08-26
|
|
21
|
+
|
|
22
|
+
Engineering Kit 0.12.0 extends bounded real-host verification from two to five fixed built-in drivers.
|
|
23
|
+
|
|
24
|
+
### Added
|
|
25
|
+
|
|
26
|
+
- Extends runHostVerification with three fixed built-in drivers while retaining the Kimi and WorkBuddy raw-byte behavior.
|
|
27
|
+
|
|
28
|
+
### Changed
|
|
29
|
+
|
|
30
|
+
- Uses the classic plugin-root/skills/skill-id layout for the plugin-directory driver and validates complete JSONL event streams before accepting execution.
|
|
31
|
+
- Keeps output meaning with consumers and applies strict text decoding only to the three new text-protocol drivers.
|
|
32
|
+
- Registers Qoder as manual for host support and descriptor maturity, while its real-host verification capability remains candidate.
|
|
33
|
+
|
|
34
|
+
### Fixed
|
|
35
|
+
|
|
36
|
+
- Rejects malformed protocol tails, invalid UTF-8 in text-protocol drivers, and version suffixes outside each driver's fixed format before they can support a successful public result.
|
|
37
|
+
|
|
38
|
+
### Upgrade Notes
|
|
39
|
+
|
|
40
|
+
Pin all three Foundation packages to 0.12.0. Existing runHostVerification and verifyHostVerificationBindings entrypoints and request identities remain unchanged. Reuse the host's existing login state; Foundation does not isolate authentication, freeze model identity, disable host tools, or decide domain PASS/FAIL. Qoder verification grants no build, plan, apply, install, update, uninstall, or rollback capability. The executable digest is a preflight observation and member snapshots cover only the declared members at the two observed times.
|
|
41
|
+
<!-- release-skill:changelog:end version=0.12.0 locale=en -->
|
|
42
|
+
|
|
43
|
+
|
|
3
44
|
<!-- release-skill:changelog:start version=0.11.0 locale=en baseline=sha256:108e261312b0838af53184710453fe19f369a9ea10ac5d1fc3e829e919d0f99d -->
|
|
4
45
|
## [0.11.0] - 2026-08-25
|
|
5
46
|
|
package/CHANGELOG.zh-CN.md
CHANGED
|
@@ -1,5 +1,46 @@
|
|
|
1
1
|
# 变更日志
|
|
2
2
|
|
|
3
|
+
<!-- release-skill:changelog:start version=0.13.0 locale=zh-CN baseline=sha256:3493c49151b2ebabddcba806d892ce967c0ae47621b0b2c75086e1cac334ebf9 -->
|
|
4
|
+
## [0.13.0] - 2026-08-26
|
|
5
|
+
|
|
6
|
+
Engineering Kit 0.13.0 源码候选增加完整插件验证,分别报告安装、发现和调用事实。
|
|
7
|
+
|
|
8
|
+
### 新增
|
|
9
|
+
|
|
10
|
+
- 新增永久候选根入口 runPluginVerification({ request, bindings, hostsRoot })。
|
|
11
|
+
- 保留完整插件布局并提供安装观察,载荷接受政策仍由调用方决定。
|
|
12
|
+
|
|
13
|
+
### 升级说明
|
|
14
|
+
|
|
15
|
+
三个包须精确锁步。runHostVerification 与 verifyHostVerificationBindings 继续用于单 Skill 验证。每个真实宿主与来源组合仍须取得资格证据;本次不代表发布完成或消费者机制已退出。
|
|
16
|
+
<!-- release-skill:changelog:end version=0.13.0 locale=zh-CN -->
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
<!-- release-skill:changelog:start version=0.12.0 locale=zh-CN baseline=sha256:f2a68cdeac0b2a44d7a4cc64df8e8f371795b4150719d821a31866a6e8873e2f -->
|
|
20
|
+
## [0.12.0] - 2026-08-26
|
|
21
|
+
|
|
22
|
+
Engineering Kit 0.12.0 将受约束真实宿主验证从两个固定内置驱动扩展为五个。
|
|
23
|
+
|
|
24
|
+
### 新增
|
|
25
|
+
|
|
26
|
+
- 为 runHostVerification 增加三个固定的内置驱动,保留 Kimi 与 WorkBuddy 的原始字节行为。
|
|
27
|
+
|
|
28
|
+
### 变更
|
|
29
|
+
|
|
30
|
+
- 插件目录驱动使用 plugin-root/skills/skill-id 经典插件布局;JSONL 驱动必须扫描完整事件流后才接受执行结果。
|
|
31
|
+
- 输出的业务含义由消费者判断,严格文本解码仅用于三个新增的文本协议驱动。
|
|
32
|
+
- Qoder 的宿主支持和 Descriptor 成熟度登记为 manual,真实宿主验证能力继续标为 candidate。
|
|
33
|
+
|
|
34
|
+
### 修复
|
|
35
|
+
|
|
36
|
+
- 拒绝畸形协议尾部、文本协议中的非法 UTF-8,以及驱动固定格式之外的版本后缀,避免产生错误的公共成功结果。
|
|
37
|
+
|
|
38
|
+
### 升级说明
|
|
39
|
+
|
|
40
|
+
三个 Foundation 包须精确锁定到同一 0.12.0 版本。runHostVerification、verifyHostVerificationBindings 入口与请求身份不变。验证复用宿主现有登录态;Foundation 不隔离认证、不固定模型身份、不关闭宿主工具,也不判定领域 PASS/FAIL。Qoder 验证不授予 build、plan、apply、install、update、uninstall 或 rollback 能力。可执行文件摘要仅是启动前观察,成员快照仅覆盖已声明成员的两个观察时点。
|
|
41
|
+
<!-- release-skill:changelog:end version=0.12.0 locale=zh-CN -->
|
|
42
|
+
|
|
43
|
+
|
|
3
44
|
<!-- release-skill:changelog:start version=0.11.0 locale=zh-CN baseline=sha256:5d5852f3fa3c970b4d277600a0886d533e3c883fc72ce144a85a071d1e270771 -->
|
|
4
45
|
## [0.11.0] - 2026-08-25
|
|
5
46
|
|
package/README.md
CHANGED
|
@@ -4,28 +4,23 @@
|
|
|
4
4
|
|
|
5
5
|
# skill-family-engineering-kit
|
|
6
6
|
|
|
7
|
-
<!-- release-skill:release-version: 0.
|
|
7
|
+
<!-- release-skill:release-version: 0.13.0 -->
|
|
8
8
|
|
|
9
9
|
An engineering toolkit used in development and CI. There are **exactly four** top-level commands, and no fifth:
|
|
10
10
|
|
|
11
11
|
<!-- release-skill:managed:start id=latest-release -->
|
|
12
|
-
**0.
|
|
12
|
+
**0.13.0** (2026-08-26)
|
|
13
13
|
|
|
14
|
-
Engineering Kit 0.
|
|
14
|
+
Engineering Kit 0.13.0 is a source candidate for complete plugin verification with separate installation, discovery and invocation facts.
|
|
15
15
|
|
|
16
16
|
**Added**
|
|
17
17
|
|
|
18
|
-
- Adds
|
|
19
|
-
-
|
|
20
|
-
- Ships the registered host Profile closure through bundledHostProfilesRoot().
|
|
21
|
-
|
|
22
|
-
**Changed**
|
|
23
|
-
|
|
24
|
-
- Manual Profiles retain their lifecycle restrictions; host verification does not grant build, plan, apply, install, update, uninstall, or rollback support.
|
|
18
|
+
- Adds the permanent candidate root entry runPluginVerification({ request, bindings, hostsRoot }).
|
|
19
|
+
- Preserves complete plugin layouts and exposes installation observations without taking over caller acceptance policy.
|
|
25
20
|
|
|
26
21
|
**Upgrade Notes**
|
|
27
22
|
|
|
28
|
-
|
|
23
|
+
Pin the three packages together. Existing runHostVerification and verifyHostVerificationBindings remain available for single-Skill verification. Every actual host/source combination still needs qualification; no publication or consumer mechanism removal is implied.
|
|
29
24
|
<!-- release-skill:managed:end id=latest-release -->
|
|
30
25
|
|
|
31
26
|
| Command | Purpose | Side effects |
|
|
@@ -45,8 +40,10 @@ Kit is the "engineering stage" layer, depending on the Harness and Contracts. It
|
|
|
45
40
|
|
|
46
41
|
## Installation and Minimal Example
|
|
47
42
|
|
|
43
|
+
Version 0.13.0 is not published. The registry command below is for use after publication; this iteration installs the three local candidate tarballs in an isolated directory.
|
|
44
|
+
|
|
48
45
|
```sh
|
|
49
|
-
npm install --save-dev skill-family-engineering-kit@0.
|
|
46
|
+
npm install --save-dev skill-family-engineering-kit@0.13.0
|
|
50
47
|
npm exec -- skill-family-kit --help
|
|
51
48
|
npm exec -- skill-family-kit scaffold --root <empty-dir> --project-id my-project
|
|
52
49
|
npm exec -- skill-family-kit adopt-plan --root <repo>
|
|
@@ -54,7 +51,7 @@ npm exec -- skill-family-kit projection --root <repo>
|
|
|
54
51
|
npm exec -- skill-family-kit check --root <repo>
|
|
55
52
|
```
|
|
56
53
|
|
|
57
|
-
The four commands above cover skeleton generation, read-only inventory, managed projection, and diagnostics respectively; a zero-install form is available via `npm exec --package=skill-family-engineering-kit@0.
|
|
54
|
+
The four commands above cover skeleton generation, read-only inventory, managed projection, and diagnostics respectively; a zero-install form is available via `npm exec --package=skill-family-engineering-kit@0.13.0 -- skill-family-kit --help`.
|
|
58
55
|
|
|
59
56
|
### Public Profile SPI
|
|
60
57
|
|
|
@@ -108,13 +105,13 @@ npm exec -- skill-family-kit scaffold host-build --root <workspace> --host <id>
|
|
|
108
105
|
npm exec -- skill-family-kit adopt-plan host-plan --root <workspace> --host <id> --path-category <id> --build-manifest <relpath> --probe-facts <relpath> --hosts-root <dir>
|
|
109
106
|
```
|
|
110
107
|
|
|
111
|
-
The Profile must be provided explicitly; Kit does not bind a specific host by default. Canonical host IDs may resolve only aliases declared by the finite registered Profile set. Probe starts no process by default; only when both `--allow-host-spawn --host-executable <absolute-path>` are given is the frozen version vector executed. Local install and update use an explicit authorization reference plus the existing contained publication primitives; uninstall is rejected with `manual-recovery-required` because Foundation has no safe bound deletion primitive. Two registered hosts have trusted version drivers; Kimi Code, WorkBuddy, CodeBuddy, and DeepSeek Harness expose independent manual facts
|
|
108
|
+
The Profile must be provided explicitly; Kit does not bind a specific host by default. Canonical host IDs may resolve only aliases declared by the finite registered Profile set. Probe starts no process by default; only when both `--allow-host-spawn --host-executable <absolute-path>` are given is the frozen version vector executed. Local install and update use an explicit authorization reference plus the existing contained publication primitives; uninstall is rejected with `manual-recovery-required` because Foundation has no safe bound deletion primitive. Two registered hosts have trusted version drivers; Kimi Code, WorkBuddy, CodeBuddy, and DeepSeek Harness expose independent manual facts. Qoder is `manual` from 0.12.0; its candidate real-host verification grants no lifecycle support. Adapter source only accepts declared text closures; binary projection is not supported; see the [host capability matrix](../../docs/reference/host-capability-matrix.md) and registered Profiles.
|
|
112
109
|
|
|
113
110
|
### Candidate real-host verification library API
|
|
114
111
|
|
|
115
|
-
`runHostVerification({ request, bindings, hostsRoot })` and `verifyHostVerificationBindings({ results, expectedCommon, expectedRequestDigestByHost })` are library APIs, not a fifth Kit command. The first runs one bounded candidate verification against caller-bound roots using
|
|
112
|
+
`runHostVerification({ request, bindings, hostsRoot })` and `verifyHostVerificationBindings({ results, expectedCommon, expectedRequestDigestByHost })` are library APIs, not a fifth Kit command. The first runs one bounded candidate verification against caller-bound roots using a fixed built-in driver and returns a Contracts-validated, redacted four-state result. All five drivers use `existing-user-state + host-managed`; their exact identities and limitations are listed in the [host capability matrix](../../docs/reference/host-capability-matrix.md). The second API is pure and combines only `observed` results with the exact common fields and per-host request digest expected by the caller.
|
|
116
113
|
|
|
117
|
-
The API keeps consumer workload, domain output checks, domain PASS/FAIL, release freshness, and release state outside Foundation. The caller supplies a canonical `existingUserStateRoot` that is projected into the child environment but never read, digested, modified or cleaned by Foundation; it does not grant manual Profiles any build, plan, apply, install, update, or uninstall capability.
|
|
114
|
+
The API keeps consumer workload, domain output checks, domain PASS/FAIL, release freshness, and release state outside Foundation. The caller supplies a canonical `existingUserStateRoot` that is projected into the child environment but never read, digested, modified or cleaned by Foundation; it does not grant manual Profiles any build, plan, apply, install, update, or uninstall capability. Version 0.12.0 requires real-host verification of all five fixed drivers before publication; the API does not own that release decision.
|
|
118
115
|
|
|
119
116
|
`executableSha256` binds only the bytes observed by the strict preflight read; the actual process is still spawned by pathname, so the caller must exclusively control the executable namespace through probe and invocation. Foundation retains the call's `session-*` directory and never deletes it by pathname. After inspection, the caller cleans its exclusively owned outer `temporaryRoot`.
|
|
120
117
|
|
|
@@ -234,3 +231,9 @@ This package must not perform git init, commit, push, tag, stash, branch switch,
|
|
|
234
231
|
- Package-local source: `src/*.mjs`.
|
|
235
232
|
- Package-local candidate source: `candidate/*`; canonical public imports: `skill-family-engineering-kit/quickstart-profile`, `/adoption`, and `/skill-naming`; historical migration alias: `skill-family-engineering-kit/candidate/quickstart-profile`.
|
|
236
233
|
<!-- agent-quick-reference:end -->
|
|
234
|
+
|
|
235
|
+
## Complete Plugin Candidate
|
|
236
|
+
|
|
237
|
+
The candidate runPluginVerification({ request, bindings, hostsRoot }) preserves a complete plugin layout and separates installation, discovery and invocation facts. Each actual host/source combination still needs qualification evidence.
|
|
238
|
+
|
|
239
|
+
Version 0.13.0 is a local source candidate and is not published. Consume the three locally verified tarballs; a version marker, unit test or successful install is not complete host qualification or release approval.
|
package/README.zh-CN.md
CHANGED
|
@@ -5,28 +5,23 @@
|
|
|
5
5
|
|
|
6
6
|
# skill-family-engineering-kit
|
|
7
7
|
|
|
8
|
-
<!-- release-skill:release-version: 0.
|
|
8
|
+
<!-- release-skill:release-version: 0.13.0 -->
|
|
9
9
|
|
|
10
10
|
开发与 CI 阶段使用的工程工具包。**恰好四个**顶层命令,没有第五个:
|
|
11
11
|
|
|
12
12
|
<!-- release-skill:managed:start id=latest-release -->
|
|
13
|
-
**0.
|
|
13
|
+
**0.13.0** (2026-08-26)
|
|
14
14
|
|
|
15
|
-
Engineering Kit 0.
|
|
15
|
+
Engineering Kit 0.13.0 源码候选增加完整插件验证,分别报告安装、发现和调用事实。
|
|
16
16
|
|
|
17
17
|
**新增**
|
|
18
18
|
|
|
19
|
-
-
|
|
20
|
-
-
|
|
21
|
-
- 通过 bundledHostProfilesRoot() 携带已登记宿主 Profile 闭包。
|
|
22
|
-
|
|
23
|
-
**变更**
|
|
24
|
-
|
|
25
|
-
- manual Profile 继续保留生命周期限制;宿主验证不会授予 build、plan、apply、install、update、uninstall 或 rollback 能力。
|
|
19
|
+
- 新增永久候选根入口 runPluginVerification({ request, bindings, hostsRoot })。
|
|
20
|
+
- 保留完整插件布局并提供安装观察,载荷接受政策仍由调用方决定。
|
|
26
21
|
|
|
27
22
|
**升级说明**
|
|
28
23
|
|
|
29
|
-
|
|
24
|
+
三个包须精确锁步。runHostVerification 与 verifyHostVerificationBindings 继续用于单 Skill 验证。每个真实宿主与来源组合仍须取得资格证据;本次不代表发布完成或消费者机制已退出。
|
|
30
25
|
<!-- release-skill:managed:end id=latest-release -->
|
|
31
26
|
|
|
32
27
|
| 命令 | 用途 | 副作用 |
|
|
@@ -46,8 +41,10 @@ Kit 是「工程阶段」层,依赖 Harness 与 Contracts。它只做四件事
|
|
|
46
41
|
|
|
47
42
|
## 安装和最小示例
|
|
48
43
|
|
|
44
|
+
0.13.0 尚未发布。下面的 registry 安装命令供发布后使用;本轮验证应在隔离目录安装三个本地候选 tarball。
|
|
45
|
+
|
|
49
46
|
```sh
|
|
50
|
-
npm install --save-dev skill-family-engineering-kit@0.
|
|
47
|
+
npm install --save-dev skill-family-engineering-kit@0.13.0
|
|
51
48
|
npm exec -- skill-family-kit --help
|
|
52
49
|
npm exec -- skill-family-kit scaffold --root <empty-dir> --project-id my-project
|
|
53
50
|
npm exec -- skill-family-kit adopt-plan --root <repo>
|
|
@@ -55,7 +52,7 @@ npm exec -- skill-family-kit projection --root <repo>
|
|
|
55
52
|
npm exec -- skill-family-kit check --root <repo>
|
|
56
53
|
```
|
|
57
54
|
|
|
58
|
-
以上四条命令分别覆盖生成骨架、只读盘点、受管投影与诊断;零安装形式可用 `npm exec --package=skill-family-engineering-kit@0.
|
|
55
|
+
以上四条命令分别覆盖生成骨架、只读盘点、受管投影与诊断;零安装形式可用 `npm exec --package=skill-family-engineering-kit@0.13.0 -- skill-family-kit --help`。
|
|
59
56
|
|
|
60
57
|
### 公共 Profile SPI
|
|
61
58
|
|
|
@@ -109,7 +106,15 @@ npm exec -- skill-family-kit scaffold host-build --root <workspace> --host <id>
|
|
|
109
106
|
npm exec -- skill-family-kit adopt-plan host-plan --root <workspace> --host <id> --path-category <id> --build-manifest <relpath> --probe-facts <relpath> --hosts-root <dir>
|
|
110
107
|
```
|
|
111
108
|
|
|
112
|
-
Profile 必须显式提供,Kit 不默认绑定具体宿主。规范宿主 ID 只能解析已登记有限 Profile 中声明的 alias。probe 默认不启动进程;只有同时给出 `--allow-host-spawn --host-executable <绝对路径>` 才执行冻结版本向量。本地 install/update 通过显式授权引用和既有受收容发布原语执行;uninstall 因没有安全的绑定删除原语而返回 `manual-recovery-required`,不删除文件。Claude/Codex 使用受信版本 driver;Kimi Code、WorkBuddy、CodeBuddy 和 DeepSeek Harness
|
|
109
|
+
Profile 必须显式提供,Kit 不默认绑定具体宿主。规范宿主 ID 只能解析已登记有限 Profile 中声明的 alias。probe 默认不启动进程;只有同时给出 `--allow-host-spawn --host-executable <绝对路径>` 才执行冻结版本向量。本地 install/update 通过显式授权引用和既有受收容发布原语执行;uninstall 因没有安全的绑定删除原语而返回 `manual-recovery-required`,不删除文件。Claude/Codex 使用受信版本 driver;Kimi Code、WorkBuddy、CodeBuddy 和 DeepSeek Harness 只提供独立手动事实。Qoder 自 0.12.0 起为 `manual`,候选真实验证不授予生命周期能力。adapter source 只接受已声明的文本闭包,不支持二进制投影;精确宿主支持矩阵见 [宿主能力矩阵](../../docs/reference/host-capability-matrix.md) 与已登记 Profile。
|
|
110
|
+
|
|
111
|
+
### 候选真实宿主验证 API
|
|
112
|
+
|
|
113
|
+
`runHostVerification({ request, bindings, hostsRoot })` 使用固定内置驱动执行一次受约束验证,返回经过 Contracts 校验和脱敏的四态结果。五个驱动覆盖 Kimi、WorkBuddy、Claude Code、Codex exec 和 Qoder CLI,均复用 `existing-user-state + host-managed` 登录态。`verifyHostVerificationBindings({ results, expectedCommon, expectedRequestDigestByHost })` 只组合校验 `observed` 结果,公共字段与请求摘要必须匹配调用方预期。两者都是库 API,不增加第五个 Kit 命令。
|
|
114
|
+
|
|
115
|
+
调用方保留工作负载、领域输出检查、领域 PASS/FAIL、发布新鲜度和发布状态。规范路径 `existingUserStateRoot` 仅投影到子进程环境,Foundation 自身不读取、摘要、修改或清理其中内容,也不授予手动宿主生命周期能力。0.12.0 发布前须完成五个固定驱动的真实验证,发布决定不归该 API。
|
|
116
|
+
|
|
117
|
+
`executableSha256` 只绑定启动前严格读取的字节,进程仍按路径启动;调用方须在版本观察和执行期间独占可执行文件命名空间。Foundation 保留 `session-*` 目录,调用方检查后清理独占的外层 `temporaryRoot`。
|
|
113
118
|
|
|
114
119
|
### 候选真实宿主验证库 API
|
|
115
120
|
|
|
@@ -235,3 +240,9 @@ projection 只写同时满足两个条件的路径:manifest 列出,且目标
|
|
|
235
240
|
- 包内源:`src/*.mjs`。
|
|
236
241
|
- 包内 Candidate 源:`candidate/*`;规范公共导入:`skill-family-engineering-kit/quickstart-profile`、`/adoption` 与 `/skill-naming`;历史迁移别名:`skill-family-engineering-kit/candidate/quickstart-profile`。
|
|
237
242
|
<!-- agent-quick-reference:end -->
|
|
243
|
+
|
|
244
|
+
## 完整插件候选能力
|
|
245
|
+
|
|
246
|
+
新增候选 runPluginVerification({ request, bindings, hostsRoot }),保留完整插件布局并分别报告安装、发现与调用事实。真实宿主与来源组合仍需独立资格证据。
|
|
247
|
+
|
|
248
|
+
0.13.0 为本地源码候选,尚未发布。消费本地已验证的三包 tarball,不能把版本标记、单元测试或安装成功当作完整宿主资格与发布批准。
|
package/SECURITY.md
CHANGED
|
@@ -10,6 +10,11 @@
|
|
|
10
10
|
],
|
|
11
11
|
"driverId": "claude-version-v1",
|
|
12
12
|
"adapterFormat": "skill-directory-v1",
|
|
13
|
+
"verification": {
|
|
14
|
+
"driverId": "claude-code-print-v1",
|
|
15
|
+
"authStrategy": "existing-user-state",
|
|
16
|
+
"credentialMutation": "host-managed"
|
|
17
|
+
},
|
|
13
18
|
"pathCategories": [
|
|
14
19
|
{
|
|
15
20
|
"id": "claude-user-skills",
|
|
@@ -10,6 +10,11 @@
|
|
|
10
10
|
],
|
|
11
11
|
"driverId": "codex-version-v1",
|
|
12
12
|
"adapterFormat": "skill-directory-v1",
|
|
13
|
+
"verification": {
|
|
14
|
+
"driverId": "codex-exec-v1",
|
|
15
|
+
"authStrategy": "existing-user-state",
|
|
16
|
+
"credentialMutation": "host-managed"
|
|
17
|
+
},
|
|
13
18
|
"pathCategories": [
|
|
14
19
|
{
|
|
15
20
|
"id": "codex-user-skills",
|
|
@@ -3,10 +3,24 @@
|
|
|
3
3
|
"kind": "skill-family.host-descriptor",
|
|
4
4
|
"hostId": "qoder",
|
|
5
5
|
"displayName": "Qoder",
|
|
6
|
-
"support": "
|
|
7
|
-
"maturity": "
|
|
6
|
+
"support": "manual",
|
|
7
|
+
"maturity": "manual",
|
|
8
8
|
"sourceAliases": [],
|
|
9
|
-
"
|
|
9
|
+
"verification": {
|
|
10
|
+
"driverId": "qodercli-print-v1",
|
|
11
|
+
"authStrategy": "existing-user-state",
|
|
12
|
+
"credentialMutation": "host-managed"
|
|
13
|
+
},
|
|
10
14
|
"pathCategories": [],
|
|
11
|
-
"probeCapabilities": [
|
|
15
|
+
"probeCapabilities": [
|
|
16
|
+
"cli",
|
|
17
|
+
"version",
|
|
18
|
+
"payload",
|
|
19
|
+
"registry",
|
|
20
|
+
"discover",
|
|
21
|
+
"enabled",
|
|
22
|
+
"reload",
|
|
23
|
+
"smoke",
|
|
24
|
+
"uninstall"
|
|
25
|
+
]
|
|
12
26
|
}
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
"capabilities": [
|
|
21
21
|
{
|
|
22
22
|
"id": "foundation.contracts.object-validation",
|
|
23
|
-
"intent": "Compile and validate all
|
|
23
|
+
"intent": "Compile and validate all 42 registered top-level Foundation contract object documents under both the draft-07 and 2020-12 dialects using Ajv 8.20.0 (exact pin).",
|
|
24
24
|
"useWhen": [
|
|
25
25
|
"Need to validate registered contract objects such as project-manifest, profile-descriptor, report-model",
|
|
26
26
|
"Need to detect the document dialect and select the strict or tolerant validation policy"
|
|
@@ -73,7 +73,7 @@
|
|
|
73
73
|
"Need to find a kernel protocol definition by protocol name"
|
|
74
74
|
],
|
|
75
75
|
"doNotUseWhen": [
|
|
76
|
-
"Need to add a registered top-level object without an ADR (the
|
|
76
|
+
"Need to add a registered top-level object without an ADR (the 42-object set is fixed)"
|
|
77
77
|
],
|
|
78
78
|
"prerequisites": [
|
|
79
79
|
"registry.json is shipped with the package",
|
|
@@ -94,8 +94,8 @@
|
|
|
94
94
|
"SFC1004: duplicate protocol registration"
|
|
95
95
|
],
|
|
96
96
|
"invariants": [
|
|
97
|
-
"registry.json's schemaVersion=1 and contractsVersion
|
|
98
|
-
"The set of
|
|
97
|
+
"registry.json's schemaVersion=1 and contractsVersion are the single authority",
|
|
98
|
+
"The set of 42 top-level objects is fixed; additions require an ADR"
|
|
99
99
|
],
|
|
100
100
|
"ownedByCaller": [
|
|
101
101
|
"Interpretation of an object's business meaning"
|
|
@@ -568,7 +568,7 @@
|
|
|
568
568
|
},
|
|
569
569
|
{
|
|
570
570
|
"id": "foundation.harness.host-adapter",
|
|
571
|
-
|
|
571
|
+
"intent": "Implement the generic mechanism layer for host integration: normalize adapter source, compute the build closure, validate the build manifest, verify peer adapter directories, materialize the build, and probe the version vector (spawn disabled by default).",
|
|
572
572
|
"useWhen": [
|
|
573
573
|
"Need to turn a host adapter source into a reproducible text closure",
|
|
574
574
|
"Need to materialize build artifacts at a contained location",
|
|
@@ -922,7 +922,8 @@
|
|
|
922
922
|
"The consumer supplies the command, cwd, and a timeout policy with maxSeconds and killGraceSeconds"
|
|
923
923
|
],
|
|
924
924
|
"inputs": [
|
|
925
|
-
"Command/args/cwd, timeout policy, optional progress and terminal progress paths, optional budget and long-tool hooks, optional evidence path"
|
|
925
|
+
"Command/args/cwd, timeout policy, optional progress and terminal progress paths, optional budget and long-tool hooks, optional evidence path",
|
|
926
|
+
"The optional 0.13.0 outputByteLimits caps stdout and stderr independently by raw bytes. Equality is allowed; first excess uses the existing termination path. Without caps, no limit fields are added and legacy behavior remains."
|
|
926
927
|
],
|
|
927
928
|
"outputs": [
|
|
928
929
|
"One frozen watchdog-termination-envelope per call (single writer)"
|
|
@@ -1265,7 +1266,7 @@
|
|
|
1265
1266
|
},
|
|
1266
1267
|
{
|
|
1267
1268
|
"id": "foundation.kit.host",
|
|
1268
|
-
|
|
1269
|
+
"intent": "Explicitly select a packaged or caller-provided finite host Profile set and trusted drivers, providing canonical identity resolution, describe/build/probe/plan, bounded local install/update, and read-only peer adapter verification; uninstall remains a manual-recovery refusal.",
|
|
1269
1270
|
"useWhen": [
|
|
1270
1271
|
"Need to resolve a registered host or finite Profile alias",
|
|
1271
1272
|
"Need to probe, build, plan, or locally install/update host integration",
|
|
@@ -1274,7 +1275,7 @@
|
|
|
1274
1275
|
"doNotUseWhen": [
|
|
1275
1276
|
"Need remote host publication, automatic trust, or uninstall deletion",
|
|
1276
1277
|
"Need peer verification to decide domain semantics or to grant install/apply lifecycle support",
|
|
1277
|
-
"Need a
|
|
1278
|
+
"Need a Qoder lifecycle driver (that host is manual and grants no lifecycle capability)"
|
|
1278
1279
|
],
|
|
1279
1280
|
"prerequisites": [
|
|
1280
1281
|
"The host Profile is registered in profiles/hosts and aliases are finite; npm consumers may explicitly select the Kit's packaged projection root",
|
|
@@ -1292,7 +1293,7 @@
|
|
|
1292
1293
|
"verifyHostPeers reads caller-owned peer roots and writes no peer directory"
|
|
1293
1294
|
],
|
|
1294
1295
|
"failureSemantics": [
|
|
1295
|
-
"
|
|
1296
|
+
"Hosts without a bound verification driver (e.g. codebuddy) are rejected before spawn with preflight-rejected",
|
|
1296
1297
|
"Uninstall returns manual-recovery-required without deleting files",
|
|
1297
1298
|
"Missing probe facts, unknown projection categories, identity spoofing, or scope/anchor conflicts fail closed"
|
|
1298
1299
|
],
|
|
@@ -1305,7 +1306,7 @@
|
|
|
1305
1306
|
],
|
|
1306
1307
|
"routeElsewhere": [
|
|
1307
1308
|
"Remote host publication and automatic trust: explicitly unsupported",
|
|
1308
|
-
"
|
|
1309
|
+
"Qoder lifecycle driver: unsupported"
|
|
1309
1310
|
]
|
|
1310
1311
|
},
|
|
1311
1312
|
{
|
|
@@ -1601,7 +1602,7 @@
|
|
|
1601
1602
|
"Need to provide declarative data for host integration"
|
|
1602
1603
|
],
|
|
1603
1604
|
"doNotUseWhen": [
|
|
1604
|
-
"Need to register a
|
|
1605
|
+
"Need to register a Qoder lifecycle driver (that host is manual and registers only a verification driver)"
|
|
1605
1606
|
],
|
|
1606
1607
|
"prerequisites": [
|
|
1607
1608
|
"The host descriptor is bound to a trusted driverId"
|
|
@@ -1616,16 +1617,16 @@
|
|
|
1616
1617
|
"No side effects (declared data)"
|
|
1617
1618
|
],
|
|
1618
1619
|
"failureSemantics": [
|
|
1619
|
-
"qoder is marked
|
|
1620
|
+
"qoder is marked manual and manual hosts never acquire an implicit lifecycle driver"
|
|
1620
1621
|
],
|
|
1621
1622
|
"invariants": [
|
|
1622
|
-
"claude/codex have support=supported and are bound to a driverId; manual
|
|
1623
|
+
"claude/codex have support=supported and are bound to a driverId; qoder has support=manual and binds only the verification driver (qodercli-print-v1), with no lifecycle driver"
|
|
1623
1624
|
],
|
|
1624
1625
|
"ownedByCaller": [
|
|
1625
1626
|
"Host business semantics"
|
|
1626
1627
|
],
|
|
1627
1628
|
"routeElsewhere": [
|
|
1628
|
-
"
|
|
1629
|
+
"Qoder lifecycle driver: unsupported"
|
|
1629
1630
|
]
|
|
1630
1631
|
},
|
|
1631
1632
|
{
|
|
@@ -1692,38 +1693,6 @@
|
|
|
1692
1693
|
"Host lifecycle: external tools or a later version"
|
|
1693
1694
|
]
|
|
1694
1695
|
},
|
|
1695
|
-
{
|
|
1696
|
-
"id": "foundation.unsupported.qoder-driver",
|
|
1697
|
-
"intent": "The full driver for the Qoder host is not frozen (No auditable non-interactive host driver is frozen), marked unsupported, referenced for structure only.",
|
|
1698
|
-
"useWhen": [],
|
|
1699
|
-
"doNotUseWhen": [
|
|
1700
|
-
"Any scenario requiring actual execution on Qoder"
|
|
1701
|
-
],
|
|
1702
|
-
"prerequisites": [
|
|
1703
|
-
"none"
|
|
1704
|
-
],
|
|
1705
|
-
"inputs": [
|
|
1706
|
-
"none"
|
|
1707
|
-
],
|
|
1708
|
-
"outputs": [
|
|
1709
|
-
"none (unsupported)"
|
|
1710
|
-
],
|
|
1711
|
-
"sideEffects": [
|
|
1712
|
-
"none"
|
|
1713
|
-
],
|
|
1714
|
-
"failureSemantics": [
|
|
1715
|
-
"Referencing the qoder driver throws"
|
|
1716
|
-
],
|
|
1717
|
-
"invariants": [
|
|
1718
|
-
"HOST_DRIVER_IDS contains only claude-version-v1 / codex-version-v1"
|
|
1719
|
-
],
|
|
1720
|
-
"ownedByCaller": [
|
|
1721
|
-
"Qoder integration"
|
|
1722
|
-
],
|
|
1723
|
-
"routeElsewhere": [
|
|
1724
|
-
"Qoder support: a later version or external"
|
|
1725
|
-
]
|
|
1726
|
-
},
|
|
1727
1696
|
{
|
|
1728
1697
|
"id": "foundation.unsupported.binary-adapter-source",
|
|
1729
1698
|
"intent": "The adapter source content supports only string (utf8 text closure); binary projection is out of scope.",
|
|
@@ -1916,6 +1885,40 @@
|
|
|
1916
1885
|
"Git write operations: the Git lifecycle guide"
|
|
1917
1886
|
]
|
|
1918
1887
|
},
|
|
1888
|
+
{
|
|
1889
|
+
"id": "foundation.kit.qoder-verification",
|
|
1890
|
+
"intent": "Qoder has been a manual host (descriptor maturity=manual) since 0.12.0: one constrained real-host verification runs through the frozen qodercli-print-v1 verification driver (capability stability=candidate) in a fresh workspace",
|
|
1891
|
+
"useWhen": [
|
|
1892
|
+
"Need to request Qoder candidate real-host verification for upgraded consumers"
|
|
1893
|
+
],
|
|
1894
|
+
"doNotUseWhen": [
|
|
1895
|
+
"Need Qoder build, plan, apply, generic install/update/uninstall, or rollback lifecycle capability"
|
|
1896
|
+
],
|
|
1897
|
+
"prerequisites": [
|
|
1898
|
+
"The qoder executable exists and is logged in; qoder static preflight and fresh-workspace layout checks pass"
|
|
1899
|
+
],
|
|
1900
|
+
"inputs": [
|
|
1901
|
+
"Qoder host Profile and verification driver binding"
|
|
1902
|
+
],
|
|
1903
|
+
"outputs": [
|
|
1904
|
+
"A single constrained real-execution observed, failed, or rejected result (quota and error-code details stay out of the public result)"
|
|
1905
|
+
],
|
|
1906
|
+
"sideEffects": [
|
|
1907
|
+
"Runs one qoder CLI execution in a fresh workspace; writes private evidence and snapshots"
|
|
1908
|
+
],
|
|
1909
|
+
"failureSemantics": [
|
|
1910
|
+
"Static preflight failures reject before spawn with preflight-rejected; execution failures such as quota exhaustion are marked execution-failed"
|
|
1911
|
+
],
|
|
1912
|
+
"invariants": [
|
|
1913
|
+
"qoder gains no lifecycle driver; all nine probe facts remain unknown/driver-limited"
|
|
1914
|
+
],
|
|
1915
|
+
"ownedByCaller": [
|
|
1916
|
+
"Qoder integration and the real release gate"
|
|
1917
|
+
],
|
|
1918
|
+
"routeElsewhere": [
|
|
1919
|
+
"Qoder lifecycle capability: external tools or a later version"
|
|
1920
|
+
]
|
|
1921
|
+
},
|
|
1919
1922
|
{
|
|
1920
1923
|
"id": "foundation.contracts.quickstart-profile-candidate",
|
|
1921
1924
|
"intent": "Expose the Quickstart Profile v2 protocol, canonical-$id Schema collection, and frozen eight-entry historical-ID migration map through skill-family-contracts/quickstart-profile for exact-version integration trials.",
|
|
@@ -1947,7 +1950,7 @@
|
|
|
1947
1950
|
],
|
|
1948
1951
|
"invariants": [
|
|
1949
1952
|
"The sole business-neutral operation is execute-method; method identifiers and domain schemas remain consumer-owned",
|
|
1950
|
-
"Candidate schemas remain absent from src/registry.json and do not expand the
|
|
1953
|
+
"Candidate schemas remain absent from src/registry.json and do not expand the 42 stable object classes",
|
|
1951
1954
|
"Stability is candidate: actively upgrading the candidate version requires contract verification",
|
|
1952
1955
|
"Historical entrypoints and eight Schema IDs migrate once; stable promotion requires no further contract-identity change, while obtaining the new published promise still requires exact-pin updates"
|
|
1953
1956
|
],
|
|
@@ -2057,6 +2060,93 @@
|
|
|
2057
2060
|
"Ordinary managed projection: use runProjection from the stable Kit root export",
|
|
2058
2061
|
"Remote publication: route to release-skill"
|
|
2059
2062
|
]
|
|
2063
|
+
},
|
|
2064
|
+
{
|
|
2065
|
+
"id": "foundation.harness.filesystem-tree-observation",
|
|
2066
|
+
"intent": "Read a complete bound tree and leave payload acceptance to the caller",
|
|
2067
|
+
"useWhen": [
|
|
2068
|
+
"Need regular-file, directory, empty-directory and mode facts",
|
|
2069
|
+
"Need a fresh observation using the same approved root binding"
|
|
2070
|
+
],
|
|
2071
|
+
"doNotUseWhen": [
|
|
2072
|
+
"Need installation, recovery or deletion",
|
|
2073
|
+
"Need a transaction snapshot or continuous path identity protection"
|
|
2074
|
+
],
|
|
2075
|
+
"prerequisites": [
|
|
2076
|
+
"A canonical real root and its createFilesystemRootBinding result",
|
|
2077
|
+
"The packaged native implementation supports the current Darwin/Linux platform"
|
|
2078
|
+
],
|
|
2079
|
+
"inputs": [
|
|
2080
|
+
"{ root, rootBinding }"
|
|
2081
|
+
],
|
|
2082
|
+
"outputs": [
|
|
2083
|
+
"Private filesystem-tree-observation: sorted members, contentBase64 from actual file bytes, sha256, bytes, statMode and membersDigest"
|
|
2084
|
+
],
|
|
2085
|
+
"sideEffects": [
|
|
2086
|
+
"Read-only filesystem access; no writes, processes or network"
|
|
2087
|
+
],
|
|
2088
|
+
"failureSemantics": [
|
|
2089
|
+
"Invalid parameters throw TypeError; mechanism failures fail closed through SFC2004",
|
|
2090
|
+
"Partial member sets are not successful results"
|
|
2091
|
+
],
|
|
2092
|
+
"invariants": [
|
|
2093
|
+
"Every call observes the tree again without cached results",
|
|
2094
|
+
"Observation success and payload acceptance remain separate",
|
|
2095
|
+
"No ignore policy, expected-member table or callbacks"
|
|
2096
|
+
],
|
|
2097
|
+
"ownedByCaller": [
|
|
2098
|
+
"Payload acceptance policy and business meaning",
|
|
2099
|
+
"Protection of sensitive observation data"
|
|
2100
|
+
],
|
|
2101
|
+
"routeElsewhere": [
|
|
2102
|
+
"Use Kit plugin verification for installation and invocation",
|
|
2103
|
+
"Release authorization belongs to release-skill"
|
|
2104
|
+
]
|
|
2105
|
+
},
|
|
2106
|
+
{
|
|
2107
|
+
"id": "foundation.kit.plugin-verification",
|
|
2108
|
+
"intent": "Preserve the complete plugin layout and report input, installation, discovery and bounded invocation facts separately",
|
|
2109
|
+
"useWhen": [
|
|
2110
|
+
"Need frozen local payload or finite public-channel plugin verification",
|
|
2111
|
+
"Need installation observations without transferring domain acceptance"
|
|
2112
|
+
],
|
|
2113
|
+
"doNotUseWhen": [
|
|
2114
|
+
"Need arbitrary drivers, retry, recovery or rollback",
|
|
2115
|
+
"Need Foundation to approve domain output or publication"
|
|
2116
|
+
],
|
|
2117
|
+
"prerequisites": [
|
|
2118
|
+
"Exact lockstep package versions, a frozen request, private bindings and hostsRoot",
|
|
2119
|
+
"Each actual host/source combination needs separate qualification evidence; an exported candidate API is not qualification"
|
|
2120
|
+
],
|
|
2121
|
+
"inputs": [
|
|
2122
|
+
"runPluginVerification({ request, bindings, hostsRoot })",
|
|
2123
|
+
"plugin-verification-request: install-only or install-and-invoke; local-staged or public-channel"
|
|
2124
|
+
],
|
|
2125
|
+
"outputs": [
|
|
2126
|
+
"plugin-verification-result with separate input, installation, discovery and invocation facts",
|
|
2127
|
+
"Raw streams and complete tree observations under private evidence roots"
|
|
2128
|
+
],
|
|
2129
|
+
"sideEffects": [
|
|
2130
|
+
"Creates a fresh installation, session and private evidence; finite channel commands may access the network",
|
|
2131
|
+
"Invocation mode starts a constrained host; install-only makes no model call"
|
|
2132
|
+
],
|
|
2133
|
+
"failureSemantics": [
|
|
2134
|
+
"rejected, failed and indeterminate distinguish refusal, determined failure and unknown boundary state",
|
|
2135
|
+
"A determined output limit breach cannot become success; unknown terminal state remains indeterminate"
|
|
2136
|
+
],
|
|
2137
|
+
"invariants": [
|
|
2138
|
+
"No overwrite of existing installations, automatic retry or cleanup of unknown state",
|
|
2139
|
+
"Existing single-Skill runHostVerification and verifyHostVerificationBindings contracts remain intact",
|
|
2140
|
+
"Complete tree observations do not replace caller acceptance policy"
|
|
2141
|
+
],
|
|
2142
|
+
"ownedByCaller": [
|
|
2143
|
+
"Source freezing, workload, authorization, authentication and host qualification",
|
|
2144
|
+
"Domain acceptance, release freshness, migration and mechanism removal evidence"
|
|
2145
|
+
],
|
|
2146
|
+
"routeElsewhere": [
|
|
2147
|
+
"Domain review belongs to the consumer",
|
|
2148
|
+
"Publication, retry and task orchestration belong to their external skill families"
|
|
2149
|
+
]
|
|
2060
2150
|
}
|
|
2061
2151
|
]
|
|
2062
2152
|
}
|