skill-family-engineering-kit 0.18.0 → 0.19.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 +20 -0
- package/CHANGELOG.zh-CN.md +20 -0
- package/README.md +14 -13
- package/README.zh-CN.md +14 -13
- package/candidate/profile-bundle.mjs +33 -1
- package/data/capability-catalog/capability-catalog.en.json +43 -0
- package/data/capability-catalog/capability-catalog.json +33 -0
- package/data/capability-catalog/capability-catalog.zh-CN.json +43 -0
- package/docs/agents/capability-catalog.en.json +43 -0
- package/docs/agents/capability-catalog.json +33 -0
- package/docs/agents/capability-catalog.zh-CN.json +43 -0
- package/docs/en/reference/failure-and-side-effect-matrix/index.html +10 -0
- package/docs/public/status/index.html +3 -3
- package/docs/reference/api/harness/index.html +106 -0
- package/docs/reference/failure-and-side-effect-matrix/index.html +10 -0
- package/docs/search/search_index.json +1 -1
- package/package.json +3 -3
- package/release-notes/0.19.0.yaml +21 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,25 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
<!-- release-skill:changelog:start version=0.19.0 locale=en baseline=sha256:d3b79ce1564df3e0dc0f0abc1af616817550044de73f9b05b57a5dd65fd47dae -->
|
|
4
|
+
## [0.19.0] - 2026-09-07
|
|
5
|
+
|
|
6
|
+
Engineering Kit 0.19.0 projects the new batch transport into the official offline Bundle and registers the mechanism-batch capability in the built-in catalog.
|
|
7
|
+
|
|
8
|
+
### Added
|
|
9
|
+
|
|
10
|
+
- The official Bundle projection now carries runMechanismCliBatch, the --batch CLI mode, the two mechanism-batch Schemas, and the frozen batch capacity policy with unchanged source identity, digest, and integrity handling.
|
|
11
|
+
- The capability catalog adds foundation.harness.mechanism-batch with since 0.19.0 and stability candidate, together with intent, failure semantics, and direct test references.
|
|
12
|
+
|
|
13
|
+
### Changed
|
|
14
|
+
|
|
15
|
+
- Adoption guidance documents batch selection rules: same-process calls keep the existing object entry; independent cross-process canonical-json requests within capacity are batch candidates; dependent or oversized requests keep the original path.
|
|
16
|
+
|
|
17
|
+
### Upgrade Notes
|
|
18
|
+
|
|
19
|
+
Pin all three Foundation packages to exactly 0.19.0 and rebuild official Bundles after upgrading per the existing package identity and provenance rules. The catalog entry is candidate: a catalog match is not a stable adoption declaration.
|
|
20
|
+
<!-- release-skill:changelog:end version=0.19.0 locale=en -->
|
|
21
|
+
|
|
22
|
+
|
|
3
23
|
<!-- release-skill:changelog:start version=0.18.0 locale=en baseline=sha256:9c6fe9859fb75316937790054ae7d45bfc21d38ce97d8e650d7da18757a462c5 -->
|
|
4
24
|
## [0.18.0] - 2026-09-05
|
|
5
25
|
|
package/CHANGELOG.zh-CN.md
CHANGED
|
@@ -1,5 +1,25 @@
|
|
|
1
1
|
# 变更日志
|
|
2
2
|
|
|
3
|
+
<!-- release-skill:changelog:start version=0.19.0 locale=zh-CN baseline=sha256:f000b13d13ce11660aaa4c5a1b450af39f99cb62a5177467783d863e7f411296 -->
|
|
4
|
+
## [0.19.0] - 2026-09-07
|
|
5
|
+
|
|
6
|
+
Engineering Kit 0.19.0 把新批量传输投影进官方离线 Bundle,并在内置能力目录登记 mechanism-batch 能力。
|
|
7
|
+
|
|
8
|
+
### 新增
|
|
9
|
+
|
|
10
|
+
- 官方 Bundle 投影携带 runMechanismCliBatch、--batch CLI 模式、两个机制批量 Schema 与冻结的批量容量政策,来源身份、摘要与完整性处理不变。
|
|
11
|
+
- 能力目录新增 foundation.harness.mechanism-batch:since 0.19.0、stability candidate,并登记意图、失败语义与直接测试引用。
|
|
12
|
+
|
|
13
|
+
### 变更
|
|
14
|
+
|
|
15
|
+
- 采用指导补充批量选择规则:同进程调用保留既有对象入口;跨进程、相互独立且容量允许的 canonical-json 请求可作为批量候选;有依赖或超限请求保留原路径。
|
|
16
|
+
|
|
17
|
+
### 升级说明
|
|
18
|
+
|
|
19
|
+
三个 Foundation 包须一起精确锁定到 0.19.0,升级后按既有包身份与 provenance 规则重建官方 Bundle。该目录条目为候选能力:目录命中不构成稳定采用声明。
|
|
20
|
+
<!-- release-skill:changelog:end version=0.19.0 locale=zh-CN -->
|
|
21
|
+
|
|
22
|
+
|
|
3
23
|
<!-- release-skill:changelog:start version=0.18.0 locale=zh-CN baseline=sha256:c8c2891b64fc31e1fb3754715da04d6ec0727b31e36e011d38735e45795cdd53 -->
|
|
4
24
|
## [0.18.0] - 2026-09-05
|
|
5
25
|
|
package/README.md
CHANGED
|
@@ -4,26 +4,27 @@
|
|
|
4
4
|
|
|
5
5
|
# skill-family-engineering-kit
|
|
6
6
|
|
|
7
|
-
<!-- release-skill:release-version: 0.
|
|
7
|
+
<!-- release-skill:release-version: 0.19.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.19.0** (2026-09-07)
|
|
13
13
|
|
|
14
|
-
Engineering Kit 0.
|
|
14
|
+
Engineering Kit 0.19.0 projects the new batch transport into the official offline Bundle and registers the mechanism-batch capability in the built-in catalog.
|
|
15
15
|
|
|
16
16
|
**Added**
|
|
17
17
|
|
|
18
|
-
- The
|
|
18
|
+
- The official Bundle projection now carries runMechanismCliBatch, the --batch CLI mode, the two mechanism-batch Schemas, and the frozen batch capacity policy with unchanged source identity, digest, and integrity handling.
|
|
19
|
+
- The capability catalog adds foundation.harness.mechanism-batch with since 0.19.0 and stability candidate, together with intent, failure semantics, and direct test references.
|
|
19
20
|
|
|
20
21
|
**Changed**
|
|
21
22
|
|
|
22
|
-
-
|
|
23
|
+
- Adoption guidance documents batch selection rules: same-process calls keep the existing object entry; independent cross-process canonical-json requests within capacity are batch candidates; dependent or oversized requests keep the original path.
|
|
23
24
|
|
|
24
25
|
**Upgrade Notes**
|
|
25
26
|
|
|
26
|
-
Pin all three Foundation packages to exactly 0.
|
|
27
|
+
Pin all three Foundation packages to exactly 0.19.0 and rebuild official Bundles after upgrading per the existing package identity and provenance rules. The catalog entry is candidate: a catalog match is not a stable adoption declaration.
|
|
27
28
|
<!-- release-skill:managed:end id=latest-release -->
|
|
28
29
|
|
|
29
30
|
### Foundation 0.15.0 candidate qualification entries
|
|
@@ -67,15 +68,15 @@ mkdir "$pack_dir/consumer" && (cd "$pack_dir/consumer" && npm init -y)
|
|
|
67
68
|
After publication, use the registry coordinate:
|
|
68
69
|
|
|
69
70
|
```sh
|
|
70
|
-
npm install --save-dev skill-family-engineering-kit@0.
|
|
71
|
-
npm exec --package=skill-family-engineering-kit@0.
|
|
72
|
-
npm exec --package=skill-family-engineering-kit@0.
|
|
73
|
-
npm exec --package=skill-family-engineering-kit@0.
|
|
74
|
-
npm exec --package=skill-family-engineering-kit@0.
|
|
75
|
-
npm exec --package=skill-family-engineering-kit@0.
|
|
71
|
+
npm install --save-dev skill-family-engineering-kit@0.19.0
|
|
72
|
+
npm exec --package=skill-family-engineering-kit@0.19.0 -- skill-family-kit --help
|
|
73
|
+
npm exec --package=skill-family-engineering-kit@0.19.0 -- skill-family-kit scaffold --root <empty-dir> --project-id my-project
|
|
74
|
+
npm exec --package=skill-family-engineering-kit@0.19.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.19.0 -- skill-family-kit projection --root <repo>
|
|
76
|
+
npm exec --package=skill-family-engineering-kit@0.19.0 -- skill-family-kit check --root <repo>
|
|
76
77
|
```
|
|
77
78
|
|
|
78
|
-
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.19.0 -- skill-family-kit --help`.
|
|
79
80
|
|
|
80
81
|
### Three adoption journeys
|
|
81
82
|
|
package/README.zh-CN.md
CHANGED
|
@@ -5,26 +5,27 @@
|
|
|
5
5
|
|
|
6
6
|
# skill-family-engineering-kit
|
|
7
7
|
|
|
8
|
-
<!-- release-skill:release-version: 0.
|
|
8
|
+
<!-- release-skill:release-version: 0.19.0 -->
|
|
9
9
|
|
|
10
10
|
开发与 CI 阶段使用的工程工具包。**恰好四个**顶层命令,没有第五个:
|
|
11
11
|
|
|
12
12
|
<!-- release-skill:managed:start id=latest-release -->
|
|
13
|
-
**0.
|
|
13
|
+
**0.19.0** (2026-09-07)
|
|
14
14
|
|
|
15
|
-
Engineering Kit 0.
|
|
15
|
+
Engineering Kit 0.19.0 把新批量传输投影进官方离线 Bundle,并在内置能力目录登记 mechanism-batch 能力。
|
|
16
16
|
|
|
17
17
|
**新增**
|
|
18
18
|
|
|
19
|
-
-
|
|
19
|
+
- 官方 Bundle 投影携带 runMechanismCliBatch、--batch CLI 模式、两个机制批量 Schema 与冻结的批量容量政策,来源身份、摘要与完整性处理不变。
|
|
20
|
+
- 能力目录新增 foundation.harness.mechanism-batch:since 0.19.0、stability candidate,并登记意图、失败语义与直接测试引用。
|
|
20
21
|
|
|
21
22
|
**变更**
|
|
22
23
|
|
|
23
|
-
-
|
|
24
|
+
- 采用指导补充批量选择规则:同进程调用保留既有对象入口;跨进程、相互独立且容量允许的 canonical-json 请求可作为批量候选;有依赖或超限请求保留原路径。
|
|
24
25
|
|
|
25
26
|
**升级说明**
|
|
26
27
|
|
|
27
|
-
三个 Foundation 包须一起精确锁定到 0.
|
|
28
|
+
三个 Foundation 包须一起精确锁定到 0.19.0,升级后按既有包身份与 provenance 规则重建官方 Bundle。该目录条目为候选能力:目录命中不构成稳定采用声明。
|
|
28
29
|
<!-- release-skill:managed:end id=latest-release -->
|
|
29
30
|
|
|
30
31
|
### Foundation 0.15.0 candidate 资格入口
|
|
@@ -68,15 +69,15 @@ mkdir "$pack_dir/consumer" && (cd "$pack_dir/consumer" && npm init -y)
|
|
|
68
69
|
发布后再使用 registry 坐标:
|
|
69
70
|
|
|
70
71
|
```sh
|
|
71
|
-
npm install --save-dev skill-family-engineering-kit@0.
|
|
72
|
-
npm exec --package=skill-family-engineering-kit@0.
|
|
73
|
-
npm exec --package=skill-family-engineering-kit@0.
|
|
74
|
-
npm exec --package=skill-family-engineering-kit@0.
|
|
75
|
-
npm exec --package=skill-family-engineering-kit@0.
|
|
76
|
-
npm exec --package=skill-family-engineering-kit@0.
|
|
72
|
+
npm install --save-dev skill-family-engineering-kit@0.19.0
|
|
73
|
+
npm exec --package=skill-family-engineering-kit@0.19.0 -- skill-family-kit --help
|
|
74
|
+
npm exec --package=skill-family-engineering-kit@0.19.0 -- skill-family-kit scaffold --root <empty-dir> --project-id my-project
|
|
75
|
+
npm exec --package=skill-family-engineering-kit@0.19.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.19.0 -- skill-family-kit projection --root <repo>
|
|
77
|
+
npm exec --package=skill-family-engineering-kit@0.19.0 -- skill-family-kit check --root <repo>
|
|
77
78
|
```
|
|
78
79
|
|
|
79
|
-
以上四条命令分别覆盖生成骨架、只读盘点、受管投影与诊断;零安装形式可用 `npm exec --package=skill-family-engineering-kit@0.
|
|
80
|
+
以上四条命令分别覆盖生成骨架、只读盘点、受管投影与诊断;零安装形式可用 `npm exec --package=skill-family-engineering-kit@0.19.0 -- skill-family-kit --help`。
|
|
80
81
|
|
|
81
82
|
### 三条采用旅程
|
|
82
83
|
|
|
@@ -76,6 +76,16 @@ const ADDITIONAL_FOUNDATION_SCHEMA_FILES = Object.freeze([
|
|
|
76
76
|
["fixed-set-publication-receipt.schema.json", "src/schemas/fixed-set-publication-receipt.schema.json", "schemas/foundation/fixed-set-publication-receipt.schema.json"],
|
|
77
77
|
["schema-validation-batch-request.schema.json", "candidate/foundation-mechanisms/schema-validation-batch-request.schema.json", "schemas/foundation/schema-validation-batch-request.schema.json"],
|
|
78
78
|
["schema-validation-batch-result.schema.json", "candidate/foundation-mechanisms/schema-validation-batch-result.schema.json", "schemas/foundation/schema-validation-batch-result.schema.json"],
|
|
79
|
+
["mechanism-batch-request.schema.json", "candidate/foundation-mechanisms/mechanism-batch-request.schema.json", "schemas/foundation/mechanism-batch-request.schema.json"],
|
|
80
|
+
["mechanism-batch-result.schema.json", "candidate/foundation-mechanisms/mechanism-batch-result.schema.json", "schemas/foundation/mechanism-batch-result.schema.json"],
|
|
81
|
+
]);
|
|
82
|
+
|
|
83
|
+
// Non-Schema Foundation assets projected verbatim. They are deliberately kept
|
|
84
|
+
// out of ADDITIONAL_FOUNDATION_SCHEMA_FILES: the schema graph claims a
|
|
85
|
+
// document.$id for every schema row, while the capacity policy is a plain
|
|
86
|
+
// JSON authority with no Schema identity.
|
|
87
|
+
const ADDITIONAL_FOUNDATION_ASSET_FILES = Object.freeze([
|
|
88
|
+
["mechanism-batch-policy.json", "candidate/foundation-mechanisms/mechanism-batch-policy.json", "schemas/foundation/mechanism-batch-policy.json"],
|
|
79
89
|
]);
|
|
80
90
|
|
|
81
91
|
const HARNESS_IMPORT_MAP = new Map([
|
|
@@ -96,6 +106,7 @@ const HARNESS_STRICT_READ_IMPORT_MAP = new Map([
|
|
|
96
106
|
|
|
97
107
|
const HARNESS_CLI_IMPORT_MAP = new Map([
|
|
98
108
|
["./quickstart-profile.mjs", "./runner.mjs"],
|
|
109
|
+
["skill-family-contracts/quickstart-profile", "./runtime/contracts-candidate/index.mjs"],
|
|
99
110
|
]);
|
|
100
111
|
|
|
101
112
|
const HARNESS_ATOMIC_IMPORT_MAP = new Map([
|
|
@@ -980,13 +991,22 @@ function projectContractsCandidateIndex(sourceText) {
|
|
|
980
991
|
`schema load path ${fileName}`,
|
|
981
992
|
);
|
|
982
993
|
}
|
|
983
|
-
for (const [fileName] of ADDITIONAL_FOUNDATION_SCHEMA_FILES.filter(
|
|
994
|
+
for (const [fileName] of ADDITIONAL_FOUNDATION_SCHEMA_FILES.filter(
|
|
995
|
+
([name]) => name.startsWith("schema-validation-batch-") || name.startsWith("mechanism-batch-"),
|
|
996
|
+
)) {
|
|
984
997
|
applyOnce(
|
|
985
998
|
`load(new URL("../foundation-mechanisms/${fileName}", import.meta.url))`,
|
|
986
999
|
`load(new URL("../../schemas/foundation/${fileName}", import.meta.url))`,
|
|
987
1000
|
`schema load path ${fileName}`,
|
|
988
1001
|
);
|
|
989
1002
|
}
|
|
1003
|
+
for (const [fileName] of ADDITIONAL_FOUNDATION_ASSET_FILES) {
|
|
1004
|
+
applyOnce(
|
|
1005
|
+
`load(new URL("../foundation-mechanisms/${fileName}", import.meta.url))`,
|
|
1006
|
+
`load(new URL("../../schemas/foundation/${fileName}", import.meta.url))`,
|
|
1007
|
+
`asset load path ${fileName}`,
|
|
1008
|
+
);
|
|
1009
|
+
}
|
|
990
1010
|
|
|
991
1011
|
const getCollectionMarker = "function getCollection(";
|
|
992
1012
|
const getCollectionHits = projected.split(getCollectionMarker).length - 1;
|
|
@@ -1238,6 +1258,10 @@ export async function buildQuickstartProfileProjection({
|
|
|
1238
1258
|
for (const [fileName, sourcePath] of ADDITIONAL_FOUNDATION_SCHEMA_FILES) {
|
|
1239
1259
|
additionalSchemaTexts[fileName] = await readSourceText(contractsRoot, sourcePath);
|
|
1240
1260
|
}
|
|
1261
|
+
const additionalAssetTexts = {};
|
|
1262
|
+
for (const [fileName, sourcePath] of ADDITIONAL_FOUNDATION_ASSET_FILES) {
|
|
1263
|
+
additionalAssetTexts[fileName] = await readSourceText(contractsRoot, sourcePath);
|
|
1264
|
+
}
|
|
1241
1265
|
sources.harnessIndex = await readSourceText(harnessRoot, "src/index.mjs");
|
|
1242
1266
|
sources.harnessCandidate = await readSourceText(harnessRoot, "candidate/quickstart-profile.mjs");
|
|
1243
1267
|
sources.harnessMechanismsCli = await readSourceText(harnessRoot, "candidate/mechanisms-cli.mjs");
|
|
@@ -1453,6 +1477,9 @@ export async function buildQuickstartProfileProjection({
|
|
|
1453
1477
|
for (const [fileName, , bundlePath] of ADDITIONAL_FOUNDATION_SCHEMA_FILES) {
|
|
1454
1478
|
setText(bundlePath, additionalSchemaTexts[fileName]);
|
|
1455
1479
|
}
|
|
1480
|
+
for (const [fileName, , bundlePath] of ADDITIONAL_FOUNDATION_ASSET_FILES) {
|
|
1481
|
+
setText(bundlePath, additionalAssetTexts[fileName]);
|
|
1482
|
+
}
|
|
1456
1483
|
setText("schemas/foundation/operation-request.schema.json", sources.operationRequest);
|
|
1457
1484
|
setText("schemas/foundation/operation-result.schema.json", sources.operationResult);
|
|
1458
1485
|
setText("schemas/foundation/migration-manifest.schema.json", sources.migrationManifestSchema);
|
|
@@ -1591,6 +1618,11 @@ export async function buildQuickstartProfileProjection({
|
|
|
1591
1618
|
additionalSchemaTexts[fileName],
|
|
1592
1619
|
"projected",
|
|
1593
1620
|
]),
|
|
1621
|
+
...ADDITIONAL_FOUNDATION_ASSET_FILES.map(([fileName, sourcePath]) => [
|
|
1622
|
+
`packages/skill-family-contracts/${sourcePath}`,
|
|
1623
|
+
additionalAssetTexts[fileName],
|
|
1624
|
+
"projected",
|
|
1625
|
+
]),
|
|
1594
1626
|
["packages/skill-family-contracts/candidate/quickstart-profile/index.mjs", sources.candidateIndex, "extraction-input"],
|
|
1595
1627
|
["packages/skill-family-harness-node/package.json", harnessPackageJsonText, "identity"],
|
|
1596
1628
|
["packages/skill-family-harness-node/src/index.mjs", sources.harnessIndex, "imported-surface"],
|
|
@@ -2217,6 +2217,49 @@
|
|
|
2217
2217
|
"Malicious-concurrency, kernel-image or signature-proof gaps return to Foundation; do not copy a walker, native addon, Harness, schema, Registry, runner or receipt chain locally"
|
|
2218
2218
|
]
|
|
2219
2219
|
},
|
|
2220
|
+
{
|
|
2221
|
+
"id": "foundation.harness.mechanism-batch",
|
|
2222
|
+
"intent": "Combine mutually independent canonical-json requests that would otherwise need one cross-process invocation each into a single bounded, same-operation, ordered batch transport, reducing repeated process starts and transfer overhead",
|
|
2223
|
+
"useWhen": [
|
|
2224
|
+
"Multiple mutually independent canonical-json requests need per-item cross-process invocation (one process start and transfer each) and item count plus request/response bytes fit the capacity recorded in the capability catalog",
|
|
2225
|
+
"The caller has the same-version official Bundle with a verified source and takes on the caller responsibility of domain grouping and batch splitting"
|
|
2226
|
+
],
|
|
2227
|
+
"doNotUseWhen": [
|
|
2228
|
+
"Requests already live in the same Node process (reuse the existing invokeFoundationMechanism object entry point; do not introduce a wrapper with no benefit)",
|
|
2229
|
+
"A later item depends on an earlier item's result, or concurrency, caching, retry, automatic splitting, or cross-item references are needed",
|
|
2230
|
+
"The request exceeds the batch capacity, or contains operations outside this batch (such as schema batch validation, self-check, or fixed-set publication writes)"
|
|
2231
|
+
],
|
|
2232
|
+
"prerequisites": [
|
|
2233
|
+
"Contracts, Harness, and Engineering Kit are pinned to exactly the same version; the official Bundle is generated from same-version packages and keeps source identity, digest, and integrity checks",
|
|
2234
|
+
"The caller supplies the input/output/error streams (process standard streams by default); domain grouping, capacity splitting, and stream acceptance stay with the caller"
|
|
2235
|
+
],
|
|
2236
|
+
"inputs": [
|
|
2237
|
+
"One JSON document with exactly operation (canonical-json) and inputs (non-empty ordered array; each item is {document}); NDJSON, session protocols, and automatic array detection are unsupported"
|
|
2238
|
+
],
|
|
2239
|
+
"outputs": [
|
|
2240
|
+
"{results:[{inputIndex,exitCode,response}]}; successful items carry the original mechanism response and failed items the original CLI error object, in input order"
|
|
2241
|
+
],
|
|
2242
|
+
"sideEffects": [
|
|
2243
|
+
"None (items execute through the existing pure-function dispatcher; only the caller-provided output/error streams are written; no file, network, process, or residual-state side effects)"
|
|
2244
|
+
],
|
|
2245
|
+
"failureSemantics": [
|
|
2246
|
+
"Whole-batch shape or capacity refusals write one batch error object to the error stream and exit 2 (TypeError projection; details.kind is closed to batch-structure-invalid, batch-item-limit, batch-input-limit, batch-output-limit)",
|
|
2247
|
+
"Per-item mechanism failures are projected into that item's response and later items still run; at least one failure exits 2; partial batch results are never delivered"
|
|
2248
|
+
],
|
|
2249
|
+
"invariants": [
|
|
2250
|
+
"Outer shape checks for every item complete before the first item runs; item order, duplicates, and the per-item invocation count stay unchanged",
|
|
2251
|
+
"The complete response bytes are not sent until confirmed within the output limit; error objects are neither reordered nor normalized"
|
|
2252
|
+
],
|
|
2253
|
+
"ownedByCaller": [
|
|
2254
|
+
"Domain grouping and capacity splitting, and judging dependencies between requests",
|
|
2255
|
+
"Version availability and maturity judgment (since 0.19.0 and candidate status live in the catalog and API documentation), the exact pin, and source-identity binding",
|
|
2256
|
+
"Batch adoption completion and domain acceptance judgment"
|
|
2257
|
+
],
|
|
2258
|
+
"routeElsewhere": [
|
|
2259
|
+
"Concurrency, caching, retry, cross-item references, or automatic splitting: keep them on the original consumer path, or return a real common gap to Foundation as a minimal capability contract",
|
|
2260
|
+
"Mechanisms outside this batch (schema batch validation, self-check, fixed-set publication writes, and so on) keep their existing public entry points"
|
|
2261
|
+
]
|
|
2262
|
+
},
|
|
2220
2263
|
{
|
|
2221
2264
|
"id": "foundation.kit.plugin-verification",
|
|
2222
2265
|
"intent": "Preserve the complete plugin layout and add dedicated Qoder and WorkBuddy production lifecycle drivers while keeping structure and host semantics separate",
|
|
@@ -1444,6 +1444,39 @@
|
|
|
1444
1444
|
"migration": "none",
|
|
1445
1445
|
"promotionPolicy": "consumer-transparent"
|
|
1446
1446
|
},
|
|
1447
|
+
{
|
|
1448
|
+
"id": "foundation.harness.mechanism-batch",
|
|
1449
|
+
"package": "skill-family-harness-node",
|
|
1450
|
+
"layer": "harness",
|
|
1451
|
+
"since": "0.19.0",
|
|
1452
|
+
"stability": "candidate",
|
|
1453
|
+
"adoptionScopes": ["harness"],
|
|
1454
|
+
"entrypoints": [
|
|
1455
|
+
"runMechanismCliBatch (packages/skill-family-harness-node/candidate/mechanisms-cli.mjs)",
|
|
1456
|
+
"mechanisms-cli.mjs --batch (packages/skill-family-harness-node/candidate/mechanisms-cli.mjs)"
|
|
1457
|
+
],
|
|
1458
|
+
"sourceRefs": [
|
|
1459
|
+
"packages/skill-family-contracts/candidate/foundation-mechanisms/mechanism-batch-policy.json",
|
|
1460
|
+
"packages/skill-family-contracts/candidate/foundation-mechanisms/mechanism-batch-request.schema.json",
|
|
1461
|
+
"packages/skill-family-contracts/candidate/foundation-mechanisms/mechanism-batch-result.schema.json",
|
|
1462
|
+
"packages/skill-family-harness-node/candidate/mechanisms-cli.mjs",
|
|
1463
|
+
"packages/skill-family-engineering-kit/candidate/profile-bundle.mjs"
|
|
1464
|
+
],
|
|
1465
|
+
"positiveTestRefs": [
|
|
1466
|
+
"packages/skill-family-contracts/test/quickstart-profile.test.mjs",
|
|
1467
|
+
"packages/skill-family-harness-node/test/quickstart-profile.test.mjs",
|
|
1468
|
+
"packages/skill-family-engineering-kit/test/candidate-mechanisms-cli.test.mjs",
|
|
1469
|
+
"packages/skill-family-engineering-kit/test/candidate-profile-bundle.test.mjs"
|
|
1470
|
+
],
|
|
1471
|
+
"negativeTestRefs": [
|
|
1472
|
+
"packages/skill-family-contracts/test/quickstart-profile.test.mjs",
|
|
1473
|
+
"packages/skill-family-harness-node/test/quickstart-profile.test.mjs",
|
|
1474
|
+
"packages/skill-family-engineering-kit/test/candidate-mechanisms-cli.test.mjs",
|
|
1475
|
+
"packages/skill-family-engineering-kit/test/candidate-profile-bundle.test.mjs"
|
|
1476
|
+
],
|
|
1477
|
+
"migration": "none",
|
|
1478
|
+
"promotionPolicy": "consumer-transparent"
|
|
1479
|
+
},
|
|
1447
1480
|
{
|
|
1448
1481
|
"id": "foundation.kit.plugin-verification",
|
|
1449
1482
|
"package": "skill-family-engineering-kit",
|
|
@@ -2216,6 +2216,49 @@
|
|
|
2216
2216
|
"恶意并发、内核映像或签名证明缺口交回 Foundation;不得复制 walker、native addon、Harness、schema、Registry、runner 或 receipt 链"
|
|
2217
2217
|
]
|
|
2218
2218
|
},
|
|
2219
|
+
{
|
|
2220
|
+
"id": "foundation.harness.mechanism-batch",
|
|
2221
|
+
"intent": "把相互独立、需逐项跨进程调用的 canonical-json 请求合并为一次有界、同操作、顺序执行的批量传输,减少重复进程启动与传输开销",
|
|
2222
|
+
"useWhen": [
|
|
2223
|
+
"多个相互独立的 canonical-json 请求需要逐项跨进程调用(每项一次进程启动与传输),且项数与请求/响应字节落在能力目录登记的容量内",
|
|
2224
|
+
"调用方已安装来源明确的同版本官方 Bundle,并承担领域分组与批次切分的调用方责任"
|
|
2225
|
+
],
|
|
2226
|
+
"doNotUseWhen": [
|
|
2227
|
+
"请求已位于同一 Node 进程内(优先复用既有 invokeFoundationMechanism 对象入口,不引入无收益的流包装)",
|
|
2228
|
+
"后项输入依赖前项结果,或需要并发、缓存、重试、自动拆批或跨项引用",
|
|
2229
|
+
"请求超过批次容量,或包含本批未支持的操作(如 schema 批量校验、self-check、固定集合写入)"
|
|
2230
|
+
],
|
|
2231
|
+
"prerequisites": [
|
|
2232
|
+
"Contracts、Harness 与 Engineering Kit 精确锁定同一版本;官方 Bundle 由同版本三包生成并保留来源身份、摘要与完整性检查",
|
|
2233
|
+
"调用方提供 input/output/error 流(默认进程标准流);领域分组、容量切分与流接收责任归调用方"
|
|
2234
|
+
],
|
|
2235
|
+
"inputs": [
|
|
2236
|
+
"恰好包含 operation(canonical-json)与 inputs(非空有序数组,每项 {document})的一个 JSON 文档;不支持 NDJSON、会话协议或数组自动探测"
|
|
2237
|
+
],
|
|
2238
|
+
"outputs": [
|
|
2239
|
+
"{results:[{inputIndex,exitCode,response}]};成功项 response 为原机制结果,失败项为原 CLI 错误对象,顺序与输入一致"
|
|
2240
|
+
],
|
|
2241
|
+
"sideEffects": [
|
|
2242
|
+
"无(逐项经既有纯函数分派器执行;只写调用方提供的 output/error 流;无文件、网络、进程或残余状态副作用)"
|
|
2243
|
+
],
|
|
2244
|
+
"failureSemantics": [
|
|
2245
|
+
"整批结构或容量拒绝向 error 流写一个批次错误对象并整体退出 2(TypeError 投影;details.kind 封闭为 batch-structure-invalid、batch-item-limit、batch-input-limit、batch-output-limit)",
|
|
2246
|
+
"单项机制失败按原 CLI 错误投影写入该项 response 并继续执行后续项;至少一项失败整体退出 2;不交付部分批次结果"
|
|
2247
|
+
],
|
|
2248
|
+
"invariants": [
|
|
2249
|
+
"全部项的外层形状检查先于第一项执行;项顺序、重复项与逐项调用次数保持不变",
|
|
2250
|
+
"完整响应字节在确认未超输出上限前不发送;错误对象不重新排序或规范化"
|
|
2251
|
+
],
|
|
2252
|
+
"ownedByCaller": [
|
|
2253
|
+
"领域分组与容量切分、请求间依赖关系的判断",
|
|
2254
|
+
"版本可用性与成熟度判断(since 0.19.0、candidate 由目录与 API 文档携带)、精确 pin 与来源身份绑定",
|
|
2255
|
+
"批次采用完成与领域验收判定"
|
|
2256
|
+
],
|
|
2257
|
+
"routeElsewhere": [
|
|
2258
|
+
"需要并发、缓存、重试、跨项引用或自动拆分:由消费者保留原路径处理,或把真实共性缺口交回 Foundation 形成最小能力合同",
|
|
2259
|
+
"本批未支持的机制(schema 批量校验、self-check、固定集合写入等)保留各自既有公共入口"
|
|
2260
|
+
]
|
|
2261
|
+
},
|
|
2219
2262
|
{
|
|
2220
2263
|
"id": "foundation.kit.plugin-verification",
|
|
2221
2264
|
"intent": "保留完整插件布局,增加 Qoder 与 WorkBuddy 专属生产生命周期 driver,并把结构合同与宿主语义分开",
|
|
@@ -2217,6 +2217,49 @@
|
|
|
2217
2217
|
"Malicious-concurrency, kernel-image or signature-proof gaps return to Foundation; do not copy a walker, native addon, Harness, schema, Registry, runner or receipt chain locally"
|
|
2218
2218
|
]
|
|
2219
2219
|
},
|
|
2220
|
+
{
|
|
2221
|
+
"id": "foundation.harness.mechanism-batch",
|
|
2222
|
+
"intent": "Combine mutually independent canonical-json requests that would otherwise need one cross-process invocation each into a single bounded, same-operation, ordered batch transport, reducing repeated process starts and transfer overhead",
|
|
2223
|
+
"useWhen": [
|
|
2224
|
+
"Multiple mutually independent canonical-json requests need per-item cross-process invocation (one process start and transfer each) and item count plus request/response bytes fit the capacity recorded in the capability catalog",
|
|
2225
|
+
"The caller has the same-version official Bundle with a verified source and takes on the caller responsibility of domain grouping and batch splitting"
|
|
2226
|
+
],
|
|
2227
|
+
"doNotUseWhen": [
|
|
2228
|
+
"Requests already live in the same Node process (reuse the existing invokeFoundationMechanism object entry point; do not introduce a wrapper with no benefit)",
|
|
2229
|
+
"A later item depends on an earlier item's result, or concurrency, caching, retry, automatic splitting, or cross-item references are needed",
|
|
2230
|
+
"The request exceeds the batch capacity, or contains operations outside this batch (such as schema batch validation, self-check, or fixed-set publication writes)"
|
|
2231
|
+
],
|
|
2232
|
+
"prerequisites": [
|
|
2233
|
+
"Contracts, Harness, and Engineering Kit are pinned to exactly the same version; the official Bundle is generated from same-version packages and keeps source identity, digest, and integrity checks",
|
|
2234
|
+
"The caller supplies the input/output/error streams (process standard streams by default); domain grouping, capacity splitting, and stream acceptance stay with the caller"
|
|
2235
|
+
],
|
|
2236
|
+
"inputs": [
|
|
2237
|
+
"One JSON document with exactly operation (canonical-json) and inputs (non-empty ordered array; each item is {document}); NDJSON, session protocols, and automatic array detection are unsupported"
|
|
2238
|
+
],
|
|
2239
|
+
"outputs": [
|
|
2240
|
+
"{results:[{inputIndex,exitCode,response}]}; successful items carry the original mechanism response and failed items the original CLI error object, in input order"
|
|
2241
|
+
],
|
|
2242
|
+
"sideEffects": [
|
|
2243
|
+
"None (items execute through the existing pure-function dispatcher; only the caller-provided output/error streams are written; no file, network, process, or residual-state side effects)"
|
|
2244
|
+
],
|
|
2245
|
+
"failureSemantics": [
|
|
2246
|
+
"Whole-batch shape or capacity refusals write one batch error object to the error stream and exit 2 (TypeError projection; details.kind is closed to batch-structure-invalid, batch-item-limit, batch-input-limit, batch-output-limit)",
|
|
2247
|
+
"Per-item mechanism failures are projected into that item's response and later items still run; at least one failure exits 2; partial batch results are never delivered"
|
|
2248
|
+
],
|
|
2249
|
+
"invariants": [
|
|
2250
|
+
"Outer shape checks for every item complete before the first item runs; item order, duplicates, and the per-item invocation count stay unchanged",
|
|
2251
|
+
"The complete response bytes are not sent until confirmed within the output limit; error objects are neither reordered nor normalized"
|
|
2252
|
+
],
|
|
2253
|
+
"ownedByCaller": [
|
|
2254
|
+
"Domain grouping and capacity splitting, and judging dependencies between requests",
|
|
2255
|
+
"Version availability and maturity judgment (since 0.19.0 and candidate status live in the catalog and API documentation), the exact pin, and source-identity binding",
|
|
2256
|
+
"Batch adoption completion and domain acceptance judgment"
|
|
2257
|
+
],
|
|
2258
|
+
"routeElsewhere": [
|
|
2259
|
+
"Concurrency, caching, retry, cross-item references, or automatic splitting: keep them on the original consumer path, or return a real common gap to Foundation as a minimal capability contract",
|
|
2260
|
+
"Mechanisms outside this batch (schema batch validation, self-check, fixed-set publication writes, and so on) keep their existing public entry points"
|
|
2261
|
+
]
|
|
2262
|
+
},
|
|
2220
2263
|
{
|
|
2221
2264
|
"id": "foundation.kit.plugin-verification",
|
|
2222
2265
|
"intent": "Preserve the complete plugin layout and add dedicated Qoder and WorkBuddy production lifecycle drivers while keeping structure and host semantics separate",
|
|
@@ -1444,6 +1444,39 @@
|
|
|
1444
1444
|
"migration": "none",
|
|
1445
1445
|
"promotionPolicy": "consumer-transparent"
|
|
1446
1446
|
},
|
|
1447
|
+
{
|
|
1448
|
+
"id": "foundation.harness.mechanism-batch",
|
|
1449
|
+
"package": "skill-family-harness-node",
|
|
1450
|
+
"layer": "harness",
|
|
1451
|
+
"since": "0.19.0",
|
|
1452
|
+
"stability": "candidate",
|
|
1453
|
+
"adoptionScopes": ["harness"],
|
|
1454
|
+
"entrypoints": [
|
|
1455
|
+
"runMechanismCliBatch (packages/skill-family-harness-node/candidate/mechanisms-cli.mjs)",
|
|
1456
|
+
"mechanisms-cli.mjs --batch (packages/skill-family-harness-node/candidate/mechanisms-cli.mjs)"
|
|
1457
|
+
],
|
|
1458
|
+
"sourceRefs": [
|
|
1459
|
+
"packages/skill-family-contracts/candidate/foundation-mechanisms/mechanism-batch-policy.json",
|
|
1460
|
+
"packages/skill-family-contracts/candidate/foundation-mechanisms/mechanism-batch-request.schema.json",
|
|
1461
|
+
"packages/skill-family-contracts/candidate/foundation-mechanisms/mechanism-batch-result.schema.json",
|
|
1462
|
+
"packages/skill-family-harness-node/candidate/mechanisms-cli.mjs",
|
|
1463
|
+
"packages/skill-family-engineering-kit/candidate/profile-bundle.mjs"
|
|
1464
|
+
],
|
|
1465
|
+
"positiveTestRefs": [
|
|
1466
|
+
"packages/skill-family-contracts/test/quickstart-profile.test.mjs",
|
|
1467
|
+
"packages/skill-family-harness-node/test/quickstart-profile.test.mjs",
|
|
1468
|
+
"packages/skill-family-engineering-kit/test/candidate-mechanisms-cli.test.mjs",
|
|
1469
|
+
"packages/skill-family-engineering-kit/test/candidate-profile-bundle.test.mjs"
|
|
1470
|
+
],
|
|
1471
|
+
"negativeTestRefs": [
|
|
1472
|
+
"packages/skill-family-contracts/test/quickstart-profile.test.mjs",
|
|
1473
|
+
"packages/skill-family-harness-node/test/quickstart-profile.test.mjs",
|
|
1474
|
+
"packages/skill-family-engineering-kit/test/candidate-mechanisms-cli.test.mjs",
|
|
1475
|
+
"packages/skill-family-engineering-kit/test/candidate-profile-bundle.test.mjs"
|
|
1476
|
+
],
|
|
1477
|
+
"migration": "none",
|
|
1478
|
+
"promotionPolicy": "consumer-transparent"
|
|
1479
|
+
},
|
|
1447
1480
|
{
|
|
1448
1481
|
"id": "foundation.kit.plugin-verification",
|
|
1449
1482
|
"package": "skill-family-engineering-kit",
|
|
@@ -2216,6 +2216,49 @@
|
|
|
2216
2216
|
"恶意并发、内核映像或签名证明缺口交回 Foundation;不得复制 walker、native addon、Harness、schema、Registry、runner 或 receipt 链"
|
|
2217
2217
|
]
|
|
2218
2218
|
},
|
|
2219
|
+
{
|
|
2220
|
+
"id": "foundation.harness.mechanism-batch",
|
|
2221
|
+
"intent": "把相互独立、需逐项跨进程调用的 canonical-json 请求合并为一次有界、同操作、顺序执行的批量传输,减少重复进程启动与传输开销",
|
|
2222
|
+
"useWhen": [
|
|
2223
|
+
"多个相互独立的 canonical-json 请求需要逐项跨进程调用(每项一次进程启动与传输),且项数与请求/响应字节落在能力目录登记的容量内",
|
|
2224
|
+
"调用方已安装来源明确的同版本官方 Bundle,并承担领域分组与批次切分的调用方责任"
|
|
2225
|
+
],
|
|
2226
|
+
"doNotUseWhen": [
|
|
2227
|
+
"请求已位于同一 Node 进程内(优先复用既有 invokeFoundationMechanism 对象入口,不引入无收益的流包装)",
|
|
2228
|
+
"后项输入依赖前项结果,或需要并发、缓存、重试、自动拆批或跨项引用",
|
|
2229
|
+
"请求超过批次容量,或包含本批未支持的操作(如 schema 批量校验、self-check、固定集合写入)"
|
|
2230
|
+
],
|
|
2231
|
+
"prerequisites": [
|
|
2232
|
+
"Contracts、Harness 与 Engineering Kit 精确锁定同一版本;官方 Bundle 由同版本三包生成并保留来源身份、摘要与完整性检查",
|
|
2233
|
+
"调用方提供 input/output/error 流(默认进程标准流);领域分组、容量切分与流接收责任归调用方"
|
|
2234
|
+
],
|
|
2235
|
+
"inputs": [
|
|
2236
|
+
"恰好包含 operation(canonical-json)与 inputs(非空有序数组,每项 {document})的一个 JSON 文档;不支持 NDJSON、会话协议或数组自动探测"
|
|
2237
|
+
],
|
|
2238
|
+
"outputs": [
|
|
2239
|
+
"{results:[{inputIndex,exitCode,response}]};成功项 response 为原机制结果,失败项为原 CLI 错误对象,顺序与输入一致"
|
|
2240
|
+
],
|
|
2241
|
+
"sideEffects": [
|
|
2242
|
+
"无(逐项经既有纯函数分派器执行;只写调用方提供的 output/error 流;无文件、网络、进程或残余状态副作用)"
|
|
2243
|
+
],
|
|
2244
|
+
"failureSemantics": [
|
|
2245
|
+
"整批结构或容量拒绝向 error 流写一个批次错误对象并整体退出 2(TypeError 投影;details.kind 封闭为 batch-structure-invalid、batch-item-limit、batch-input-limit、batch-output-limit)",
|
|
2246
|
+
"单项机制失败按原 CLI 错误投影写入该项 response 并继续执行后续项;至少一项失败整体退出 2;不交付部分批次结果"
|
|
2247
|
+
],
|
|
2248
|
+
"invariants": [
|
|
2249
|
+
"全部项的外层形状检查先于第一项执行;项顺序、重复项与逐项调用次数保持不变",
|
|
2250
|
+
"完整响应字节在确认未超输出上限前不发送;错误对象不重新排序或规范化"
|
|
2251
|
+
],
|
|
2252
|
+
"ownedByCaller": [
|
|
2253
|
+
"领域分组与容量切分、请求间依赖关系的判断",
|
|
2254
|
+
"版本可用性与成熟度判断(since 0.19.0、candidate 由目录与 API 文档携带)、精确 pin 与来源身份绑定",
|
|
2255
|
+
"批次采用完成与领域验收判定"
|
|
2256
|
+
],
|
|
2257
|
+
"routeElsewhere": [
|
|
2258
|
+
"需要并发、缓存、重试、跨项引用或自动拆分:由消费者保留原路径处理,或把真实共性缺口交回 Foundation 形成最小能力合同",
|
|
2259
|
+
"本批未支持的机制(schema 批量校验、self-check、固定集合写入等)保留各自既有公共入口"
|
|
2260
|
+
]
|
|
2261
|
+
},
|
|
2219
2262
|
{
|
|
2220
2263
|
"id": "foundation.kit.plugin-verification",
|
|
2221
2264
|
"intent": "保留完整插件布局,增加 Qoder 与 WorkBuddy 专属生产生命周期 driver,并把结构合同与宿主语义分开",
|
|
@@ -2031,6 +2031,16 @@
|
|
|
2031
2031
|
<td>lock file (monotonic fencing)</td>
|
|
2032
2032
|
<td><code>SFC2004</code></td>
|
|
2033
2033
|
</tr>
|
|
2034
|
+
<tr>
|
|
2035
|
+
<td><code>runMechanismCliBatch</code> / <code>mechanisms-cli.mjs --batch</code> (0.19.0 candidate)</td>
|
|
2036
|
+
<td>no</td>
|
|
2037
|
+
<td>no</td>
|
|
2038
|
+
<td>no</td>
|
|
2039
|
+
<td>no</td>
|
|
2040
|
+
<td>no</td>
|
|
2041
|
+
<td>none (only the caller-provided output/error streams are written)</td>
|
|
2042
|
+
<td>exit code 0 (all succeeded) / 2 (at least one item failed or whole batch refused); <code>details.kind</code> closed to <code>batch-structure-invalid</code>/<code>batch-item-limit</code>/<code>batch-input-limit</code>/<code>batch-output-limit</code></td>
|
|
2043
|
+
</tr>
|
|
2034
2044
|
</tbody>
|
|
2035
2045
|
</table>
|
|
2036
2046
|
<p>Harness's <code>HARNESS_EXCLUSIONS</code> explicitly excludes release-state, remote-network-access, business-semantics, workflow-orchestration, model-calls, git-writes.</p>
|
|
@@ -1792,17 +1792,17 @@
|
|
|
1792
1792
|
<tbody>
|
|
1793
1793
|
<tr>
|
|
1794
1794
|
<td><code>skill-family-contracts</code></td>
|
|
1795
|
-
<td>0.
|
|
1795
|
+
<td>0.19.0</td>
|
|
1796
1796
|
<td><a href="https://github.com/ifoohoo/skill-family-contracts">ifoohoo/skill-family-contracts</a></td>
|
|
1797
1797
|
</tr>
|
|
1798
1798
|
<tr>
|
|
1799
1799
|
<td><code>skill-family-harness-node</code></td>
|
|
1800
|
-
<td>0.
|
|
1800
|
+
<td>0.19.0</td>
|
|
1801
1801
|
<td><a href="https://github.com/ifoohoo/skill-family-harness-node">ifoohoo/skill-family-harness-node</a></td>
|
|
1802
1802
|
</tr>
|
|
1803
1803
|
<tr>
|
|
1804
1804
|
<td><code>skill-family-engineering-kit</code></td>
|
|
1805
|
-
<td>0.
|
|
1805
|
+
<td>0.19.0</td>
|
|
1806
1806
|
<td><a href="https://github.com/ifoohoo/skill-family-engineering-kit">ifoohoo/skill-family-engineering-kit</a></td>
|
|
1807
1807
|
</tr>
|
|
1808
1808
|
</tbody>
|