skill-family-engineering-kit 0.13.0 → 0.15.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 +40 -0
- package/CHANGELOG.zh-CN.md +40 -0
- package/README.md +84 -25
- package/README.zh-CN.md +84 -33
- package/data/capability-catalog/capability-catalog.en.json +2267 -0
- package/data/capability-catalog/capability-catalog.json +1507 -0
- package/data/capability-catalog/capability-catalog.schema.json +318 -0
- package/data/capability-catalog/capability-catalog.zh-CN.json +2266 -0
- package/data/examples/minimal-plugin-payload/.claude-plugin/plugin.json +5 -0
- package/data/examples/minimal-plugin-payload/shared/sample.txt +1 -0
- package/data/examples/minimal-plugin-payload/skills/entry/SKILL.md +9 -0
- package/data/examples/minimal-plugin-payload/skills/leaf/SKILL.md +9 -0
- package/docs/agents/capability-catalog.en.json +148 -33
- package/docs/agents/capability-catalog.json +170 -12
- package/docs/agents/capability-catalog.schema.json +125 -2
- package/docs/agents/capability-catalog.zh-CN.json +170 -56
- package/docs/architecture/index.html +2 -2
- package/docs/en/architecture/index.html +1 -1
- package/docs/en/migration/index.html +72 -20
- package/docs/en/quickstart/index.html +138 -14
- package/docs/en/reference/compatibility/index.html +6 -6
- package/docs/en/reference/failure-and-side-effect-matrix/index.html +62 -11
- package/docs/integration/audit/index.html +4 -1
- package/docs/integration/audit/version-compatibility/index.html +5 -2
- package/docs/migration/index.html +72 -20
- package/docs/public/status/index.html +3 -3
- package/docs/quickstart/index.html +138 -14
- package/docs/reference/api/contracts/index.html +118 -11
- package/docs/reference/api/engineering-kit/index.html +154 -13
- package/docs/reference/api/harness/index.html +108 -5
- package/docs/reference/compatibility/index.html +6 -6
- package/docs/reference/failure-and-side-effect-matrix/index.html +62 -11
- package/docs/search/search_index.json +1 -1
- package/package.json +3 -3
- package/release-notes/0.14.0.yaml +21 -0
- package/release-notes/0.15.0.yaml +21 -0
- package/src/adopt-plan.mjs +115 -1
- package/src/capability-assessment.mjs +438 -0
- package/src/cli.mjs +148 -6
- package/src/errors.mjs +1 -0
- package/src/host-verification-drivers.mjs +171 -0
- package/src/index.mjs +9 -3
- package/src/migration.mjs +278 -1
- package/src/plugin-verification.mjs +261 -3
- package/src/qualification.mjs +398 -0
- package/src/scaffold.mjs +10 -1
- package/src/skeleton.mjs +162 -8
- package/src/skill-family-directory-verification.mjs +283 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,45 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
<!-- release-skill:changelog:start version=0.15.0 locale=en baseline=sha256:8b3c67e9fe98dd14ad7b43220440311cb046d10070f16dd6c83d47d3351efbf5 -->
|
|
4
|
+
## [0.15.0] - 2026-08-29
|
|
5
|
+
|
|
6
|
+
Engineering Kit 0.15.0 adds fixed native-lifecycle and Kimi directory qualification entries.
|
|
7
|
+
|
|
8
|
+
### Added
|
|
9
|
+
|
|
10
|
+
- Adds closed 12-stage Qoder and WorkBuddy lifecycle fixture parsing.
|
|
11
|
+
- Adds Kimi directory qualification with driverVersion 1.0.0 and CLI 0.39.1 admission.
|
|
12
|
+
|
|
13
|
+
### Changed
|
|
14
|
+
|
|
15
|
+
- Qualification compares Contracts and Harness versions directly with KIT_VERSION.
|
|
16
|
+
|
|
17
|
+
### Upgrade Notes
|
|
18
|
+
|
|
19
|
+
Fixtures prove parser wiring only; consumers own formal process, directory, and domain acceptance observations.
|
|
20
|
+
<!-- release-skill:changelog:end version=0.15.0 locale=en -->
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
<!-- release-skill:changelog:start version=0.14.0 locale=en baseline=sha256:ae68c432972367cf4f77239dcad446fe4d15fc73e6042f70bd0a7b67041f93b9 -->
|
|
24
|
+
## [0.14.0] - 2026-08-28
|
|
25
|
+
|
|
26
|
+
Engineering Kit 0.14.0 adds capability discovery, migration guidance, consumer contract-test wiring, and an explicit qualification entrypoint.
|
|
27
|
+
|
|
28
|
+
### Added
|
|
29
|
+
|
|
30
|
+
- Adds read-only capability assessment through adopt-plan and the list-capabilities CLI mode.
|
|
31
|
+
- Adds consumer contract-test scaffolding guidance and the explicit qualification command for real-host evidence.
|
|
32
|
+
|
|
33
|
+
### Changed
|
|
34
|
+
|
|
35
|
+
- Documents separate candidate discovery, migration completion, contract integration, and real-host qualification conclusions.
|
|
36
|
+
|
|
37
|
+
### Upgrade Notes
|
|
38
|
+
|
|
39
|
+
Pin all three Foundation packages to 0.14.0. Capability assessment and migration planning write no files; contract vectors and official fakes prove wiring only; qualification remains an explicit consumer-owned activity.
|
|
40
|
+
<!-- release-skill:changelog:end version=0.14.0 locale=en -->
|
|
41
|
+
|
|
42
|
+
|
|
3
43
|
<!-- release-skill:changelog:start version=0.13.0 locale=en baseline=sha256:b9eed0b2361ff46c23ddd903b98b7059d9ceed8329f846010cb4a943101ec9a3 -->
|
|
4
44
|
## [0.13.0] - 2026-08-26
|
|
5
45
|
|
package/CHANGELOG.zh-CN.md
CHANGED
|
@@ -1,5 +1,45 @@
|
|
|
1
1
|
# 变更日志
|
|
2
2
|
|
|
3
|
+
<!-- release-skill:changelog:start version=0.15.0 locale=zh-CN baseline=sha256:c559c91bed872ab70dac2a4836c636b35ed905282f4aa4cdcf56d21a1ce246b9 -->
|
|
4
|
+
## [0.15.0] - 2026-08-29
|
|
5
|
+
|
|
6
|
+
Engineering Kit 0.15.0 增加固定的 native-lifecycle 与 Kimi 目录资格入口。
|
|
7
|
+
|
|
8
|
+
### 新增
|
|
9
|
+
|
|
10
|
+
- 增加 Qoder 与 WorkBuddy 封闭十二阶段生命周期 fixture 解析。
|
|
11
|
+
- 增加 Kimi 目录资格检查,使用 driverVersion 1.0.0 与 CLI 0.39.1 接纳规则。
|
|
12
|
+
|
|
13
|
+
### 变更
|
|
14
|
+
|
|
15
|
+
- 资格检查直接将 Contracts、Harness 版本与 KIT_VERSION 比较。
|
|
16
|
+
|
|
17
|
+
### 升级说明
|
|
18
|
+
|
|
19
|
+
fixture 只证明解析器接线;正式进程、目录和领域接受观察仍由消费者负责。
|
|
20
|
+
<!-- release-skill:changelog:end version=0.15.0 locale=zh-CN -->
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
<!-- release-skill:changelog:start version=0.14.0 locale=zh-CN baseline=sha256:c3c9e90c2c1e4c06d34871d18ba4062db46e484cbeccbf25867d8b59db32ccc0 -->
|
|
24
|
+
## [0.14.0] - 2026-08-28
|
|
25
|
+
|
|
26
|
+
Engineering Kit 0.14.0 增加能力发现、迁移指引、消费者契约测试接线和显式资格检查入口。
|
|
27
|
+
|
|
28
|
+
### 新增
|
|
29
|
+
|
|
30
|
+
- 通过 `adopt-plan` 与 `list-capabilities` CLI 模式增加只读能力评估。
|
|
31
|
+
- 增加消费者契约测试脚手架指引,以及生成真实宿主证据的显式资格检查命令。
|
|
32
|
+
|
|
33
|
+
### 变更
|
|
34
|
+
|
|
35
|
+
- 明确区分候选发现、迁移完成、契约接入完成和真实宿主资格四种结论。
|
|
36
|
+
|
|
37
|
+
### 升级说明
|
|
38
|
+
|
|
39
|
+
三个 Foundation 包须一起精确锁定到 0.14.0。能力评估和迁移规划不写文件;契约向量与正式测试替身只证明接线;资格检查仍由消费者显式负责。
|
|
40
|
+
<!-- release-skill:changelog:end version=0.14.0 locale=zh-CN -->
|
|
41
|
+
|
|
42
|
+
|
|
3
43
|
<!-- release-skill:changelog:start version=0.13.0 locale=zh-CN baseline=sha256:3493c49151b2ebabddcba806d892ce967c0ae47621b0b2c75086e1cac334ebf9 -->
|
|
4
44
|
## [0.13.0] - 2026-08-26
|
|
5
45
|
|
package/README.md
CHANGED
|
@@ -4,31 +4,45 @@
|
|
|
4
4
|
|
|
5
5
|
# skill-family-engineering-kit
|
|
6
6
|
|
|
7
|
-
<!-- release-skill:release-version: 0.
|
|
7
|
+
<!-- release-skill:release-version: 0.15.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.15.0** (2026-08-29)
|
|
13
13
|
|
|
14
|
-
Engineering Kit 0.
|
|
14
|
+
Engineering Kit 0.15.0 adds fixed native-lifecycle and Kimi directory qualification entries.
|
|
15
15
|
|
|
16
16
|
**Added**
|
|
17
17
|
|
|
18
|
-
- Adds
|
|
19
|
-
-
|
|
18
|
+
- Adds closed 12-stage Qoder and WorkBuddy lifecycle fixture parsing.
|
|
19
|
+
- Adds Kimi directory qualification with driverVersion 1.0.0 and CLI 0.39.1 admission.
|
|
20
|
+
|
|
21
|
+
**Changed**
|
|
22
|
+
|
|
23
|
+
- Qualification compares Contracts and Harness versions directly with KIT_VERSION.
|
|
20
24
|
|
|
21
25
|
**Upgrade Notes**
|
|
22
26
|
|
|
23
|
-
|
|
27
|
+
Fixtures prove parser wiring only; consumers own formal process, directory, and domain acceptance observations.
|
|
24
28
|
<!-- release-skill:managed:end id=latest-release -->
|
|
25
29
|
|
|
30
|
+
### Foundation 0.15.0 candidate qualification entries
|
|
31
|
+
|
|
32
|
+
The candidate adds two fixed qualification entries: `foundation.kit.plugin-verification` accepts the Qoder and WorkBuddy native-lifecycle branches, and `foundation.kit.skill-family-directory-verification` accepts the Kimi branch. Qoder and WorkBuddy each use a dedicated production driver with its own argv plan and the same twelve ordered semantic stages; executable identity is re-observed before every spawn. Contracts validates only the closed stage structure, order, and stop propagation.
|
|
33
|
+
|
|
34
|
+
`runSkillFamilyDirectoryVerification({ request, bindings })` owns the local Kimi process path. It fixes `-p <prompt> --output-format stream-json --skills-dir <family-root>`, projects a narrow environment, and captures raw output under private evidence. Caller observations are rejected. Because no official typed observation mapping is available, current results remain `indeterminate` with `official-observation-unavailable`, even when a controlled fixture stream proves parser wiring.
|
|
35
|
+
|
|
36
|
+
Consumers bind the executable, directories, source, workload, and domain facts; Kit launches the bounded local process. They must not copy a generic runner, walker, native addon, schema, registry, oracle, cache, state machine, or receipt chain. Controlled fixture protocols are Foundation-owned isolation evidence, not Qoder, WorkBuddy, or Kimi vendor grammar and not real-host qualification. A stable isolated tree is sufficient for Harness record mode; its best-effort boundary does not promise a transaction snapshot, hostile same-UID concurrency, or ABA safety.
|
|
37
|
+
|
|
38
|
+
Foundation itself does not issue network requests, but a bound executable may access the network. Foundation provides no sandbox or egress blocking; callers and the execution environment own that isolation. Qoder, WorkBuddy, and Kimi remain `manual/candidate`, and controlled fixtures do not grant real-host qualification.
|
|
39
|
+
|
|
26
40
|
| Command | Purpose | Side effects |
|
|
27
41
|
| --- | --- | --- |
|
|
28
42
|
| `scaffold` | Generate a Skill Family project skeleton in an empty directory | Only writes skeleton files to the empty target directory (atomic write, path containment); non-empty or conflicting targets are rejected and not touched |
|
|
29
|
-
| `adopt-plan` | Strictly read-only planning of adopting an existing repo | None — writes no files (including temp files)
|
|
43
|
+
| `adopt-plan` | Strictly read-only planning of adopting an existing repo | None — writes no files (including temp files); by default it may spawn one frozen read-only Git status probe; `--no-git-spawn` disables it; no Git write commands; plan output goes to stdout |
|
|
30
44
|
| `projection` | Project managed artifacts | Only writes paths authorized by manifest and declared managed by the target; unauthorized, hand-written, and out-of-bounds paths are all rejected (zero writes on rejection) |
|
|
31
|
-
| `check` | Contract/drift/closure/version/doc-fact/Git-precondition diagnostics |
|
|
45
|
+
| `check` | Contract/drift/closure/version/doc-fact/Git-precondition diagnostics | Ordinary diagnostics are read-only and write no files; by default they may spawn one frozen read-only Git status probe; `--no-git-spawn` disables it; `check relock` is an explicit controlled write transaction; `check qualification` may spawn a bound executable after preflight. Foundation itself does not issue network requests, but that process may access the network. |
|
|
32
46
|
|
|
33
47
|
## Problem It Solves
|
|
34
48
|
|
|
@@ -40,18 +54,59 @@ Kit is the "engineering stage" layer, depending on the Harness and Contracts. It
|
|
|
40
54
|
|
|
41
55
|
## Installation and Minimal Example
|
|
42
56
|
|
|
43
|
-
Version 0.
|
|
57
|
+
Version 0.15.0 is a local candidate. Build all three tarballs into one temporary directory and install those exact files for a candidate check:
|
|
58
|
+
|
|
59
|
+
```sh
|
|
60
|
+
pack_dir="$(mktemp -d)"
|
|
61
|
+
(cd packages/skill-family-contracts && pnpm pack --pack-destination "$pack_dir")
|
|
62
|
+
(cd packages/skill-family-harness-node && pnpm pack --pack-destination "$pack_dir")
|
|
63
|
+
(cd packages/skill-family-engineering-kit && pnpm pack --pack-destination "$pack_dir")
|
|
64
|
+
mkdir "$pack_dir/consumer" && (cd "$pack_dir/consumer" && npm init -y)
|
|
65
|
+
(cd "$pack_dir/consumer" && npm install "$pack_dir/skill-family-contracts-0.15.0.tgz" "$pack_dir/skill-family-harness-node-0.15.0.tgz" "$pack_dir/skill-family-engineering-kit-0.15.0.tgz")
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
After publication, use the registry coordinate:
|
|
44
69
|
|
|
45
70
|
```sh
|
|
46
|
-
npm install --save-dev skill-family-engineering-kit@0.
|
|
47
|
-
npm exec -- skill-family-kit --help
|
|
48
|
-
npm exec -- skill-family-kit scaffold --root <empty-dir> --project-id my-project
|
|
49
|
-
npm exec -- skill-family-kit adopt-plan --root <repo>
|
|
50
|
-
npm exec -- skill-family-kit projection --root <repo>
|
|
51
|
-
npm exec -- skill-family-kit check --root <repo>
|
|
71
|
+
npm install --save-dev skill-family-engineering-kit@0.15.0
|
|
72
|
+
npm exec --package=skill-family-engineering-kit@0.15.0 -- skill-family-kit --help
|
|
73
|
+
npm exec --package=skill-family-engineering-kit@0.15.0 -- skill-family-kit scaffold --root <empty-dir> --project-id my-project
|
|
74
|
+
npm exec --package=skill-family-engineering-kit@0.15.0 -- skill-family-kit adopt-plan --root <repo> --list-capabilities --all --scope all --locale en --uses ./uses.json
|
|
75
|
+
npm exec --package=skill-family-engineering-kit@0.15.0 -- skill-family-kit projection --root <repo>
|
|
76
|
+
npm exec --package=skill-family-engineering-kit@0.15.0 -- skill-family-kit check --root <repo>
|
|
52
77
|
```
|
|
53
78
|
|
|
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.
|
|
79
|
+
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.15.0 -- skill-family-kit --help`.
|
|
80
|
+
|
|
81
|
+
### Three adoption journeys
|
|
82
|
+
|
|
83
|
+
New projects can evaluate all uses before choosing stable capabilities:
|
|
84
|
+
|
|
85
|
+
```sh
|
|
86
|
+
npm exec -- skill-family-kit adopt-plan --list-capabilities --all --scope all --locale en --uses ./uses.json
|
|
87
|
+
npm exec -- skill-family-kit scaffold --root ./my-project --project-id my-project --capability <stable-id>
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
Existing projects start with a read-only plan, then record one decision for each declared use:
|
|
91
|
+
|
|
92
|
+
```sh
|
|
93
|
+
npm exec -- skill-family-kit adopt-plan --root ./existing-repo
|
|
94
|
+
npm exec -- skill-family-kit adopt-plan --root ./existing-repo --list-capabilities --scope all --locale en
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
Daily work can query one requirement without knowing a capability ID:
|
|
98
|
+
|
|
99
|
+
```sh
|
|
100
|
+
npm exec -- skill-family-kit adopt-plan --list-capabilities --locale en --filter "must not leave a partial file when a write fails"
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
The output distinguishes candidates (`supportedMatches`), boundaries (`boundary-found`), and no text match (`no-text-match`). A migration `complete` result covers only the migration gate. Contract integration is established by the consumer's adapter and domain tests. Real-host qualification is a separate explicit action:
|
|
104
|
+
|
|
105
|
+
```sh
|
|
106
|
+
npm exec -- skill-family-kit check qualification --root <consumer-repo> --capability foundation.kit.plugin-verification --request <request-json> --bindings <private-bindings-json> --native
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
The qualification command requires complete explicit inputs and can invoke the capability-specific host only after preflight; it does not turn candidate discovery or migration completion into a qualification claim.
|
|
55
110
|
|
|
56
111
|
### Public Profile SPI
|
|
57
112
|
|
|
@@ -105,7 +160,7 @@ npm exec -- skill-family-kit scaffold host-build --root <workspace> --host <id>
|
|
|
105
160
|
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>
|
|
106
161
|
```
|
|
107
162
|
|
|
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
|
|
163
|
+
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 remains `manual`; the separate native plugin candidate does not grant generic host build, plan, apply, install/update/uninstall, rollback, or real-host qualification. 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.
|
|
109
164
|
|
|
110
165
|
### Candidate real-host verification library API
|
|
111
166
|
|
|
@@ -120,14 +175,14 @@ The API keeps consumer workload, domain output checks, domain PASS/FAIL, release
|
|
|
120
175
|
- New project skeleton: `scaffold` (does not overwrite a non-empty existing repo).
|
|
121
176
|
- Existing-repo adoption inventory: `adopt-plan` (strictly read-only, no file writes, no auto-migration).
|
|
122
177
|
- Managed projection: `projection` + Profile (does not overwrite handwritten files).
|
|
123
|
-
- Engineering diagnostics: `check`
|
|
178
|
+
- Engineering diagnostics: ordinary `check` is read-only; `check relock` is an explicit controlled write transaction, and `check qualification` may spawn a bound executable after preflight.
|
|
124
179
|
|
|
125
180
|
## Boundary Mechanisms
|
|
126
181
|
|
|
127
182
|
- `scaffold`'s target must be an **empty directory** (any entry including dotfiles counts as non-empty), or a non-existent path whose parent directory exists (only the last level is created). All writes go through the harness's atomic contained write (`writeFileAtomic`), leaving no half-written artifact on failure, and paths cannot escape the target root.
|
|
128
|
-
- `adopt-plan` is structurally read-only: there is no write call in the implementation, not even a temp file; the plan bytes share the same source as `scaffold` (single source of truth `describeSkeletonFiles`), hence "the plan is the action". A dirty repo has zero byte-level change before and after running.
|
|
183
|
+
- `adopt-plan` is structurally read-only: there is no write call in the implementation, not even a temp file; the plan bytes share the same source as `scaffold` (single source of truth `describeSkeletonFiles`), hence "the plan is the action". By default it may spawn one frozen read-only Git status probe; the CLI `--no-git-spawn` (or API `allowGitSpawn: false`) disables that probe. A dirty repo has zero byte-level change before and after running.
|
|
129
184
|
- `projection` uses two-phase execution: first, for each entry, it performs path classification, containment pre-check, self-projection check, manifest authorization check, hand-written protection, and conflict guard; if any entry violates, the whole is rejected with zero writes. Overwriting an existing file must declare the precise `expect.sha256` precondition; an existing file with identical content is an idempotent no-op. On write failure it best-effort restores the pre-write bytes of already-overwritten files.
|
|
130
|
-
- `check` is
|
|
185
|
+
- Ordinary `check` is read-only and has no write calls or `--fix/--apply/--repair` modes (such flags are rejected at the entry point). By default it may spawn one frozen read-only Git status probe; the CLI `--no-git-spawn` (or API `allowGitSpawn: false`) disables that probe. `check relock` is the explicit controlled write transaction; `check qualification` may spawn a bound executable after preflight. Git precondition state uses only filesystem facts plus at most one read-only `git status --porcelain=2` with a frozen parameter vector (`--no-optional-locks` + `GIT_OPTIONAL_LOCKS=0`, no index refresh).
|
|
131
186
|
|
|
132
187
|
## Error Codes and Exit Codes
|
|
133
188
|
|
|
@@ -150,7 +205,9 @@ Process exit codes: `0` success / no findings; `1` check has findings; `2` rejec
|
|
|
150
205
|
|
|
151
206
|
## Prohibited Items
|
|
152
207
|
|
|
153
|
-
This package must not perform git init, commit, push, tag, stash, branch switch, publish, delete, remote write, or publish-state recital; it does not implement a fifth top-level command; it does no business judgments
|
|
208
|
+
This package must not perform git init, commit, push, tag, stash, branch switch, publish, delete, remote write, or publish-state recital; it does not implement a fifth top-level command; it does no business judgments or model calls.
|
|
209
|
+
|
|
210
|
+
Foundation itself does not issue network requests, but the bound executable may access the network. Foundation provides no sandbox or egress blocking; callers and the execution environment own that isolation. Repository-controlled fixtures are designed not to issue network requests.
|
|
154
211
|
|
|
155
212
|
## Troubleshooting
|
|
156
213
|
|
|
@@ -175,7 +232,7 @@ This package must not perform git init, commit, push, tag, stash, branch switch,
|
|
|
175
232
|
### Do not use when
|
|
176
233
|
|
|
177
234
|
- You need auto-fix (`check` does not fix), or auto-migration (`adopt-plan` writes no files).
|
|
178
|
-
- You need remote host
|
|
235
|
+
- You need generic or remote host lifecycle, automatic trust confirmation, deleting uninstall, or real-host qualification from a controlled fixture.
|
|
179
236
|
- You need a stable Quickstart API or expect the candidate helper to bypass `runProjection` authorization.
|
|
180
237
|
|
|
181
238
|
### Capability selection
|
|
@@ -206,7 +263,7 @@ This package must not perform git init, commit, push, tag, stash, branch switch,
|
|
|
206
263
|
### Side effects
|
|
207
264
|
|
|
208
265
|
- scaffold/projection/host-build write files to the contained target (atomic + contained).
|
|
209
|
-
- adopt-plan and check are strictly read-only; git is read-only whitelisted probe
|
|
266
|
+
- adopt-plan and ordinary check are strictly read-only and write no files; by default they may spawn one frozen read-only Git status probe, disabled by `--no-git-spawn` (or API `allowGitSpawn: false`). check relock is an explicit controlled write transaction; check qualification may spawn a bound executable after preflight. Git is a read-only whitelisted probe for diagnostic checks.
|
|
210
267
|
- `FORBIDDEN_SIDE_EFFECTS` includes git-init/commit/push/tag, publish, remote-write.
|
|
211
268
|
|
|
212
269
|
### Failure semantics
|
|
@@ -234,6 +291,8 @@ This package must not perform git init, commit, push, tag, stash, branch switch,
|
|
|
234
291
|
|
|
235
292
|
## Complete Plugin Candidate
|
|
236
293
|
|
|
237
|
-
The candidate runPluginVerification({ request, bindings, hostsRoot }) preserves a
|
|
294
|
+
The candidate `runPluginVerification({ request, bindings, hostsRoot })` preserves the two legacy goals and adds a local-only `native-lifecycle` branch. Qoder and WorkBuddy use separate production drivers with driver-owned argv plans, exactly twelve semantic stages, and executable identity re-observation before every spawn. Contracts owns only structure; Kit owns the host plan and Oracle. The controlled executable protocol proves isolation wiring and is not vendor grammar. Each actual host/source combination still needs qualification evidence.
|
|
295
|
+
|
|
296
|
+
The separate `runSkillFamilyDirectoryVerification({ request, bindings })` entry fixes the Kimi production argv and narrow environment and rejects caller observation. Its raw parser is exercised through the production process path, but no controlled fixture event is promoted to `observed`; without an official typed mapping, the public result remains `indeterminate` and a manual candidate.
|
|
238
297
|
|
|
239
|
-
Version 0.
|
|
298
|
+
Version 0.15.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 contract integration, migration completion, or real-host qualification.
|
package/README.zh-CN.md
CHANGED
|
@@ -5,31 +5,45 @@
|
|
|
5
5
|
|
|
6
6
|
# skill-family-engineering-kit
|
|
7
7
|
|
|
8
|
-
<!-- release-skill:release-version: 0.
|
|
8
|
+
<!-- release-skill:release-version: 0.15.0 -->
|
|
9
9
|
|
|
10
10
|
开发与 CI 阶段使用的工程工具包。**恰好四个**顶层命令,没有第五个:
|
|
11
11
|
|
|
12
12
|
<!-- release-skill:managed:start id=latest-release -->
|
|
13
|
-
**0.
|
|
13
|
+
**0.15.0** (2026-08-29)
|
|
14
14
|
|
|
15
|
-
Engineering Kit 0.
|
|
15
|
+
Engineering Kit 0.15.0 增加固定的 native-lifecycle 与 Kimi 目录资格入口。
|
|
16
16
|
|
|
17
17
|
**新增**
|
|
18
18
|
|
|
19
|
-
-
|
|
20
|
-
-
|
|
19
|
+
- 增加 Qoder 与 WorkBuddy 封闭十二阶段生命周期 fixture 解析。
|
|
20
|
+
- 增加 Kimi 目录资格检查,使用 driverVersion 1.0.0 与 CLI 0.39.1 接纳规则。
|
|
21
|
+
|
|
22
|
+
**变更**
|
|
23
|
+
|
|
24
|
+
- 资格检查直接将 Contracts、Harness 版本与 KIT_VERSION 比较。
|
|
21
25
|
|
|
22
26
|
**升级说明**
|
|
23
27
|
|
|
24
|
-
|
|
28
|
+
fixture 只证明解析器接线;正式进程、目录和领域接受观察仍由消费者负责。
|
|
25
29
|
<!-- release-skill:managed:end id=latest-release -->
|
|
26
30
|
|
|
31
|
+
### Foundation 0.15.0 candidate 资格入口
|
|
32
|
+
|
|
33
|
+
本候选版本增加两个固定资格入口:`foundation.kit.plugin-verification` 接入 Qoder 与 WorkBuddy 的 native-lifecycle 分支,`foundation.kit.skill-family-directory-verification` 接入 Kimi 目录分支。Qoder 与 WorkBuddy 各有一个生产 driver,各自确定 argv 计划,共用十二个有序语义阶段;每次 spawn 前重新观察可执行文件身份。Contracts 只校验闭合阶段结构、顺序与停止传播。
|
|
34
|
+
|
|
35
|
+
`runSkillFamilyDirectoryVerification({ request, bindings })` 负责启动本地 Kimi 进程,固定使用 `-p <prompt> --output-format stream-json --skills-dir <family-root>`,投影窄环境,并把原始输出写入私有证据根。调用方提供的 observation 会被拒绝。当前没有官方 typed observation 映射,因此即使受控 fixture stream 已证明 parser 接线,结果仍保持 `indeterminate`,原因为 `official-observation-unavailable`。
|
|
36
|
+
|
|
37
|
+
消费者绑定可执行文件、目录、来源、工作负载与领域事实,由 Kit 启动有界本地进程。不得复制通用 runner、walker、native addon、Schema、Registry、Oracle、cache、状态机或 receipt 链。受控 fixture 协议是 Foundation 自有的隔离证据,不是 Qoder、WorkBuddy 或 Kimi 的厂商 grammar,也不是真实宿主资格。Harness record 模式适用于稳定隔离树;best-effort 边界不承诺事务快照、同 UID 恶意并发或 ABA 安全。
|
|
38
|
+
|
|
39
|
+
Foundation 本身不发起网络请求,但绑定的 executable 仍可能联网。Foundation 不提供 sandbox 或 egress 阻断,调用方与运行环境负责隔离。Qoder、WorkBuddy 与 Kimi 仍为 `manual/candidate`,受控 fixture 不授予真实宿主资格。
|
|
40
|
+
|
|
27
41
|
| 命令 | 用途 | 副作用 |
|
|
28
42
|
| --- | --- | --- |
|
|
29
43
|
| `scaffold` | 在空目录生成 Skill Family 项目骨架 | 只向空目标目录写入骨架文件(原子写、路径收容);非空或冲突目标被拒绝且不被触碰 |
|
|
30
|
-
| `adopt-plan` | 严格只读地规划存量仓采用 |
|
|
44
|
+
| `adopt-plan` | 严格只读地规划存量仓采用 | 无——不写任何文件(含临时文件);默认可能启动一条冻结参数的只读 Git status 探测;`--no-git-spawn` 可关闭;不运行 Git 写命令;计划输出到 stdout |
|
|
31
45
|
| `projection` | 投影受管生成物 | 只写 manifest 授权且被目标声明为受管的路径;未授权、手写与越界路径一律拒绝(拒绝时零写入) |
|
|
32
|
-
| `check` | 契约/漂移/闭包/版本/文档事实/Git 前置状态诊断 |
|
|
46
|
+
| `check` | 契约/漂移/闭包/版本/文档事实/Git 前置状态诊断 | 普通诊断只读且不写文件;默认可能启动一条冻结参数的只读 Git status 探测;`--no-git-spawn` 可关闭;`check relock` 是显式受控写事务;`check qualification` 预检通过后可能启动绑定的 executable。Foundation 自身不发起网络请求,但该进程可能联网。 |
|
|
33
47
|
|
|
34
48
|
## 解决的问题
|
|
35
49
|
|
|
@@ -41,18 +55,59 @@ Kit 是「工程阶段」层,依赖 Harness 与 Contracts。它只做四件事
|
|
|
41
55
|
|
|
42
56
|
## 安装和最小示例
|
|
43
57
|
|
|
44
|
-
0.
|
|
58
|
+
0.15.0 是本地候选版本。候选验证先把三个包分别打入同一个临时目录,再安装这三个精确 tarball:
|
|
59
|
+
|
|
60
|
+
```sh
|
|
61
|
+
pack_dir="$(mktemp -d)"
|
|
62
|
+
(cd packages/skill-family-contracts && pnpm pack --pack-destination "$pack_dir")
|
|
63
|
+
(cd packages/skill-family-harness-node && pnpm pack --pack-destination "$pack_dir")
|
|
64
|
+
(cd packages/skill-family-engineering-kit && pnpm pack --pack-destination "$pack_dir")
|
|
65
|
+
mkdir "$pack_dir/consumer" && (cd "$pack_dir/consumer" && npm init -y)
|
|
66
|
+
(cd "$pack_dir/consumer" && npm install "$pack_dir/skill-family-contracts-0.15.0.tgz" "$pack_dir/skill-family-harness-node-0.15.0.tgz" "$pack_dir/skill-family-engineering-kit-0.15.0.tgz")
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
发布后再使用 registry 坐标:
|
|
45
70
|
|
|
46
71
|
```sh
|
|
47
|
-
npm install --save-dev skill-family-engineering-kit@0.
|
|
48
|
-
npm exec -- skill-family-kit --help
|
|
49
|
-
npm exec -- skill-family-kit scaffold --root <empty-dir> --project-id my-project
|
|
50
|
-
npm exec -- skill-family-kit adopt-plan --root <repo>
|
|
51
|
-
npm exec -- skill-family-kit projection --root <repo>
|
|
52
|
-
npm exec -- skill-family-kit check --root <repo>
|
|
72
|
+
npm install --save-dev skill-family-engineering-kit@0.15.0
|
|
73
|
+
npm exec --package=skill-family-engineering-kit@0.15.0 -- skill-family-kit --help
|
|
74
|
+
npm exec --package=skill-family-engineering-kit@0.15.0 -- skill-family-kit scaffold --root <empty-dir> --project-id my-project
|
|
75
|
+
npm exec --package=skill-family-engineering-kit@0.15.0 -- skill-family-kit adopt-plan --root <repo> --list-capabilities --all --scope all --locale zh-CN --uses ./uses.json
|
|
76
|
+
npm exec --package=skill-family-engineering-kit@0.15.0 -- skill-family-kit projection --root <repo>
|
|
77
|
+
npm exec --package=skill-family-engineering-kit@0.15.0 -- skill-family-kit check --root <repo>
|
|
53
78
|
```
|
|
54
79
|
|
|
55
|
-
以上四条命令分别覆盖生成骨架、只读盘点、受管投影与诊断;零安装形式可用 `npm exec --package=skill-family-engineering-kit@0.
|
|
80
|
+
以上四条命令分别覆盖生成骨架、只读盘点、受管投影与诊断;零安装形式可用 `npm exec --package=skill-family-engineering-kit@0.15.0 -- skill-family-kit --help`。
|
|
81
|
+
|
|
82
|
+
### 三条采用旅程
|
|
83
|
+
|
|
84
|
+
新项目可以先评估全部用途,再选择稳定能力:
|
|
85
|
+
|
|
86
|
+
```sh
|
|
87
|
+
npm exec -- skill-family-kit adopt-plan --list-capabilities --all --scope all --locale zh-CN --uses ./uses.json
|
|
88
|
+
npm exec -- skill-family-kit scaffold --root ./my-project --project-id my-project --capability <stable-id>
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
存量项目先运行只读计划,再为每个已声明用途记录一项 decision:
|
|
92
|
+
|
|
93
|
+
```sh
|
|
94
|
+
npm exec -- skill-family-kit adopt-plan --root ./existing-repo
|
|
95
|
+
npm exec -- skill-family-kit adopt-plan --root ./existing-repo --list-capabilities --scope all --locale zh-CN
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
日常工作不必先知道 capability ID,可以直接查询单项需求:
|
|
99
|
+
|
|
100
|
+
```sh
|
|
101
|
+
npm exec -- skill-family-kit adopt-plan --list-capabilities --locale zh-CN --filter "写文件失败时不能留下残缺文件"
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
输出会区分候选(`supportedMatches`)、边界(`boundary-found`)和无文本命中(`no-text-match`)。迁移 `complete` 只覆盖迁移门禁;契约接入完成由消费者的适配器和领域测试证明。真实宿主资格是独立的显式动作:
|
|
105
|
+
|
|
106
|
+
```sh
|
|
107
|
+
npm exec -- skill-family-kit check qualification --root <consumer-repo> --capability foundation.kit.plugin-verification --request <request-json> --bindings <private-bindings-json> --native
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
资格命令要求完整的显式输入,预检通过后才可能调用能力特定宿主;候选发现或迁移完成不会自动变成资格结论。
|
|
56
111
|
|
|
57
112
|
### 公共 Profile SPI
|
|
58
113
|
|
|
@@ -106,7 +161,7 @@ npm exec -- skill-family-kit scaffold host-build --root <workspace> --host <id>
|
|
|
106
161
|
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>
|
|
107
162
|
```
|
|
108
163
|
|
|
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
|
|
164
|
+
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 仍为 `manual`;独立的原生插件候选不授予通用 host build、plan、apply、install/update/uninstall、rollback 或真实宿主资格。adapter source 只接受已声明的文本闭包,不支持二进制投影;精确宿主支持矩阵见 [宿主能力矩阵](../../docs/reference/host-capability-matrix.md) 与已登记 Profile。
|
|
110
165
|
|
|
111
166
|
### 候选真实宿主验证 API
|
|
112
167
|
|
|
@@ -116,27 +171,19 @@ Profile 必须显式提供,Kit 不默认绑定具体宿主。规范宿主 ID
|
|
|
116
171
|
|
|
117
172
|
`executableSha256` 只绑定启动前严格读取的字节,进程仍按路径启动;调用方须在版本观察和执行期间独占可执行文件命名空间。Foundation 保留 `session-*` 目录,调用方检查后清理独占的外层 `temporaryRoot`。
|
|
118
173
|
|
|
119
|
-
### 候选真实宿主验证库 API
|
|
120
|
-
|
|
121
|
-
`runHostVerification({ request, bindings, hostsRoot })` 和 `verifyHostVerificationBindings({ results, expectedCommon, expectedRequestDigestByHost })` 是库 API,不是第五个 Kit 命令。前者通过已准入的内置 driver(`kimi-code-print-v1` 或 `workbuddy-codebuddy-print-v1`,均绑定 `existing-user-state + host-managed`),针对调用方绑定的根执行一次候选验证,并返回经过 Contracts 校验的脱敏四态结果;后者是纯函数,只组合 `observed` 结果,并核对共同字段和逐宿主 request digest。
|
|
122
|
-
|
|
123
|
-
该 API 不接管消费者 workload、领域输出检查、领域 PASS/FAIL、发布新鲜度或发布状态。调用方提供 canonical 的 `existingUserStateRoot`;Foundation 只把它投影进子进程环境,不读取、摘要、修改或清理其中内容,也不会因此为 manual Profile 授予 build、plan、apply、install、update 或 uninstall 能力。
|
|
124
|
-
|
|
125
|
-
`executableSha256` 只绑定启动前严格读取到的字节。实际进程仍按 pathname 启动,因此调用方必须在 probe 和正式调用期间独占可执行文件的命名空间。Foundation 保留本次调用的 `session-*` 目录,不按路径删除;调用方检查完成后,统一清理其独占的外层 `temporaryRoot`。
|
|
126
|
-
|
|
127
174
|
## 典型使用场景
|
|
128
175
|
|
|
129
176
|
- 新项目骨架:`scaffold`(不覆盖非空存量仓)。
|
|
130
177
|
- 存量采用盘点:`adopt-plan`(严格只读,不写文件、不自动迁移)。
|
|
131
178
|
- 受管投影:`projection` + Profile(不覆盖 handwritten 文件)。
|
|
132
|
-
-
|
|
179
|
+
- 工程诊断:普通 `check` 只读;`check relock` 执行显式受控写事务,`check qualification` 预检通过后可能启动绑定的 executable。
|
|
133
180
|
|
|
134
181
|
## 边界机制
|
|
135
182
|
|
|
136
183
|
- `scaffold` 的目标必须是**空目录**(任何条目含点文件都算非空),或其父目录已存在的不存在路径(只创建最后一级)。全部写入经 harness 的原子收容写(`writeFileAtomic`),失败不留半成品,路径不能越出目标根。
|
|
137
|
-
- `adopt-plan` 结构性只读:实现中不存在任何写调用,连临时文件都不产生;计划字节与 `scaffold` 同源(`describeSkeletonFiles`
|
|
184
|
+
- `adopt-plan` 结构性只读:实现中不存在任何写调用,连临时文件都不产生;计划字节与 `scaffold` 同源(`describeSkeletonFiles` 单一事实源),因此「计划即动作」。默认可能启动一条冻结参数的只读 Git status 探测;CLI 的 `--no-git-spawn`(或 API 的 `allowGitSpawn: false`)可关闭该探测。dirty 仓运行前后字节级零变化。
|
|
138
185
|
- `projection` 采用两阶段执行:先对每个条目做路径分类、收容预检、自投影检查、manifest 授权检查、手写保护与冲突守卫;任一条目违规则整体拒绝、零写入。覆盖既有文件必须声明精确的 `expect.sha256` 前置状态;内容相同的既有文件是幂等 no-op。写入失败时尽力还原已覆盖文件的前置字节。
|
|
139
|
-
- `check`
|
|
186
|
+
- 普通 `check` 只读且无写调用,也没有 `--fix/--apply/--repair` 模式(此类标志在入口处被拒绝)。默认可能启动一条冻结参数的只读 Git status 探测;CLI 的 `--no-git-spawn`(或 API 的 `allowGitSpawn: false`)可关闭该探测。`check relock` 执行显式受控写事务;`check qualification` 预检通过后可能启动绑定的 executable。Git 前置状态仅用文件系统事实加至多一次冻结参数矢量的只读 `git status --porcelain=2`(`--no-optional-locks` + `GIT_OPTIONAL_LOCKS=0`,不刷新索引)。
|
|
140
187
|
|
|
141
188
|
## 错误码与退出码
|
|
142
189
|
|
|
@@ -159,7 +206,9 @@ projection 只写同时满足两个条件的路径:manifest 列出,且目标
|
|
|
159
206
|
|
|
160
207
|
## 禁止项
|
|
161
208
|
|
|
162
|
-
本包不得执行 git init、commit、push、tag、stash
|
|
209
|
+
本包不得执行 git init、commit、push、tag、stash、分支切换、发布、删除、远端写入或发布状态复述;不实现第五个顶层命令;不做业务判断或模型调用。
|
|
210
|
+
|
|
211
|
+
Foundation 本身不发起网络请求,但绑定的 executable 仍可能联网。Foundation 不提供 sandbox 或 egress 阻断;隔离责任由调用方与运行环境承担。仓内受控 fixture 按设计不发起网络请求。
|
|
163
212
|
|
|
164
213
|
## 故障诊断
|
|
165
214
|
|
|
@@ -184,7 +233,7 @@ projection 只写同时满足两个条件的路径:manifest 列出,且目标
|
|
|
184
233
|
### Do not use when
|
|
185
234
|
|
|
186
235
|
- 需要自动修复(`check` 不修复)、自动迁移(`adopt-plan` 不写文件)。
|
|
187
|
-
-
|
|
236
|
+
- 需要通用或远端宿主生命周期、自动信任、删除式 uninstall,或想用受控 fixture 取得真实宿主资格。
|
|
188
237
|
- 需要稳定 Quickstart API,或希望 candidate 辅助函数绕过 `runProjection` 授权。
|
|
189
238
|
|
|
190
239
|
### Capability selection
|
|
@@ -215,7 +264,7 @@ projection 只写同时满足两个条件的路径:manifest 列出,且目标
|
|
|
215
264
|
### Side effects
|
|
216
265
|
|
|
217
266
|
- scaffold/projection/host-build 在受收容目标写文件(原子 + 收容)。
|
|
218
|
-
- adopt-plan
|
|
267
|
+
- adopt-plan 与普通 check 严格只读且不写文件;默认可能启动一条冻结参数的只读 Git status 探测,可由 `--no-git-spawn`(或 API 的 `allowGitSpawn: false`)关闭。check relock 执行显式受控写事务;check qualification 预检通过后可能启动绑定的 executable。Git 是诊断检查使用的只读白名单探测。
|
|
219
268
|
- `FORBIDDEN_SIDE_EFFECTS` 含 git-init/commit/push/tag、publish、remote-write。
|
|
220
269
|
|
|
221
270
|
### Failure semantics
|
|
@@ -243,6 +292,8 @@ projection 只写同时满足两个条件的路径:manifest 列出,且目标
|
|
|
243
292
|
|
|
244
293
|
## 完整插件候选能力
|
|
245
294
|
|
|
246
|
-
|
|
295
|
+
候选 `runPluginVerification({ request, bindings, hostsRoot })` 保留两个旧目标,并增加只允许本地来源的 `native-lifecycle` 分支。Qoder 与 WorkBuddy 使用不同的生产 driver,由 driver 自己拥有 argv 计划,共用恰好十二个语义阶段;每次 spawn 前重新观察可执行文件身份。Contracts 只拥有结构,宿主计划与 Oracle 归 Kit。受控 executable 协议只证明隔离接线,不是厂商 grammar。真实宿主与来源组合仍需独立资格证据。
|
|
296
|
+
|
|
297
|
+
独立入口 `runSkillFamilyDirectoryVerification({ request, bindings })` 固定 Kimi 生产 argv 与窄环境,并拒绝调用方 observation。原始 parser 通过生产进程路径验证,但受控 fixture 事件不会被提升为 `observed`;缺少官方 typed mapping 时,公共结果保持 `indeterminate` 和 manual candidate。
|
|
247
298
|
|
|
248
|
-
0.
|
|
299
|
+
0.15.0 为本地源码候选,尚未发布。消费本地已验证的三包 tarball;版本标记、单元测试或安装成功都不等于契约接入完成、迁移完成或真实宿主资格。
|