skill-family-engineering-kit 0.19.0 → 0.19.2

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 CHANGED
@@ -1,5 +1,36 @@
1
1
  # Changelog
2
2
 
3
+ <!-- release-skill:changelog:start version=0.19.2 locale=en baseline=sha256:b4a9f795a1264bc28c9d37378a1d92eb4fd8c1e023506fbe6f5752b08842e2f0 -->
4
+ ## [0.19.2] - 2026-09-08
5
+
6
+ Engineering Kit 0.19.2 aligns its package version and generated projections with the Foundation Adoption Review distribution patch. Public commands and behavior are unchanged.
7
+
8
+ ### Changed
9
+
10
+ - Aligns the package version, release documentation, and necessary generated projections with Foundation 0.19.2 without adding a command, capability, or adapter path.
11
+
12
+ ### Upgrade Notes
13
+
14
+ Pin all three Foundation packages to exactly 0.19.2 and rebuild official Bundles under the existing source-identity and integrity rules. The capability catalog, host descriptors, drivers, since values, and maturity are unchanged.
15
+ <!-- release-skill:changelog:end version=0.19.2 locale=en -->
16
+
17
+
18
+ <!-- release-skill:changelog:start version=0.19.1 locale=en baseline=sha256:199e48a82f8d08629d98f1286a964cbf98ba5850efe65183adfc353cfe9f3610 -->
19
+ ## [0.19.1] - 2026-09-08
20
+
21
+ Engineering Kit 0.19.1 projects the compatible batch stream and result-contract fixes into the existing official Bundle.
22
+
23
+ ### Fixed
24
+
25
+ - Carries the corrected Harness transfer behavior and Contracts result Schema without adding a second implementation or a new Kit command.
26
+ - Clarifies in the bundled capability catalog that preflight rejection invokes no mechanism, output-capacity rejection may follow execution of the current item, and output-channel failure may leave partial bytes sent.
27
+
28
+ ### Upgrade Notes
29
+
30
+ Pin all three Foundation packages to exactly 0.19.1 and rebuild official Bundles under the existing source-identity and integrity rules. The capability remains candidate with since 0.19.0; a catalog match is not a stable adoption declaration.
31
+ <!-- release-skill:changelog:end version=0.19.1 locale=en -->
32
+
33
+
3
34
  <!-- release-skill:changelog:start version=0.19.0 locale=en baseline=sha256:d3b79ce1564df3e0dc0f0abc1af616817550044de73f9b05b57a5dd65fd47dae -->
4
35
  ## [0.19.0] - 2026-09-07
5
36
 
@@ -1,5 +1,36 @@
1
1
  # 变更日志
2
2
 
3
+ <!-- release-skill:changelog:start version=0.19.2 locale=zh-CN baseline=sha256:bd0cbfd935e7b9751f6311f3d1114df2db5066448d1830f27b7c92aa3aca9687 -->
4
+ ## [0.19.2] - 2026-09-08
5
+
6
+ Engineering Kit 0.19.2 将包版本和生成投影与 Foundation Adoption Review 分发补丁对齐。公开命令和行为保持不变。
7
+
8
+ ### 变更
9
+
10
+ - 包版本、发布说明和必要生成投影与 Foundation 0.19.2 数值对齐,不增加命令、能力或 adapter 路径。
11
+
12
+ ### 升级说明
13
+
14
+ 三个 Foundation 包须一起精确锁定到 0.19.2,并按既有来源身份与完整性规则重建官方 Bundle。能力目录、宿主 descriptor、driver、since 字段和成熟度均不变。
15
+ <!-- release-skill:changelog:end version=0.19.2 locale=zh-CN -->
16
+
17
+
18
+ <!-- release-skill:changelog:start version=0.19.1 locale=zh-CN baseline=sha256:832a8dfa16c41d6381cd2b0f00f58b096f45715332d42b7be11595976ab15e1e -->
19
+ ## [0.19.1] - 2026-09-08
20
+
21
+ Engineering Kit 0.19.1 将兼容的批量流与结果合同修复投影到既有官方 Bundle。
22
+
23
+ ### 修复
24
+
25
+ - 携带修正后的 Harness 传输行为和 Contracts 结果 Schema,不增加第二份实现或新的 Kit 命令。
26
+ - 内置能力目录区分三类失败阶段:预检拒绝不会调用机制;输出容量拒绝可能发生在当前项执行后;输出通道失败可能已有部分字节送出。
27
+
28
+ ### 升级说明
29
+
30
+ 三个 Foundation 包须一起精确锁定到 0.19.1,并按既有来源身份与完整性规则重建官方 Bundle。能力仍为 candidate,since 0.19.0 保持不变;目录命中不构成稳定采用声明。
31
+ <!-- release-skill:changelog:end version=0.19.1 locale=zh-CN -->
32
+
33
+
3
34
  <!-- release-skill:changelog:start version=0.19.0 locale=zh-CN baseline=sha256:f000b13d13ce11660aaa4c5a1b450af39f99cb62a5177467783d863e7f411296 -->
4
35
  ## [0.19.0] - 2026-09-07
5
36
 
package/README.md CHANGED
@@ -4,27 +4,22 @@
4
4
 
5
5
  # skill-family-engineering-kit
6
6
 
7
- <!-- release-skill:release-version: 0.19.0 -->
7
+ <!-- release-skill:release-version: 0.19.2 -->
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.19.0** (2026-09-07)
12
+ **0.19.2** (2026-09-08)
13
13
 
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
-
16
- **Added**
17
-
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.
14
+ Engineering Kit 0.19.2 aligns its package version and generated projections with the Foundation Adoption Review distribution patch. Public commands and behavior are unchanged.
20
15
 
21
16
  **Changed**
22
17
 
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.
18
+ - Aligns the package version, release documentation, and necessary generated projections with Foundation 0.19.2 without adding a command, capability, or adapter path.
24
19
 
25
20
  **Upgrade Notes**
26
21
 
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.
22
+ Pin all three Foundation packages to exactly 0.19.2 and rebuild official Bundles under the existing source-identity and integrity rules. The capability catalog, host descriptors, drivers, since values, and maturity are unchanged.
28
23
  <!-- release-skill:managed:end id=latest-release -->
29
24
 
30
25
  ### Foundation 0.15.0 candidate qualification entries
@@ -54,7 +49,7 @@ Kit is the "engineering stage" layer, depending on the Harness and Contracts. It
54
49
 
55
50
  ## Installation and Minimal Example
56
51
 
57
- Version 0.18.0 is a local candidate. Build all three tarballs into one temporary directory and install those exact files for a candidate check:
52
+ Version 0.19.2 is the local source candidate. Build all three tarballs into one temporary directory and install those exact files for a candidate check:
58
53
 
59
54
  ```sh
60
55
  pack_dir="$(mktemp -d)"
@@ -62,21 +57,21 @@ pack_dir="$(mktemp -d)"
62
57
  (cd packages/skill-family-harness-node && pnpm pack --pack-destination "$pack_dir")
63
58
  (cd packages/skill-family-engineering-kit && pnpm pack --pack-destination "$pack_dir")
64
59
  mkdir "$pack_dir/consumer" && (cd "$pack_dir/consumer" && npm init -y)
65
- (cd "$pack_dir/consumer" && npm install "$pack_dir/skill-family-contracts-0.18.0.tgz" "$pack_dir/skill-family-harness-node-0.18.0.tgz" "$pack_dir/skill-family-engineering-kit-0.18.0.tgz")
60
+ (cd "$pack_dir/consumer" && npm install "$pack_dir/skill-family-contracts-0.19.2.tgz" "$pack_dir/skill-family-harness-node-0.19.2.tgz" "$pack_dir/skill-family-engineering-kit-0.19.2.tgz")
66
61
  ```
67
62
 
68
63
  After publication, use the registry coordinate:
69
64
 
70
65
  ```sh
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>
66
+ npm install --save-dev skill-family-engineering-kit@0.19.2
67
+ npm exec --package=skill-family-engineering-kit@0.19.2 -- skill-family-kit --help
68
+ npm exec --package=skill-family-engineering-kit@0.19.2 -- skill-family-kit scaffold --root <empty-dir> --project-id my-project
69
+ npm exec --package=skill-family-engineering-kit@0.19.2 -- skill-family-kit adopt-plan --root <repo> --list-capabilities --all --scope all --locale en --uses ./uses.json
70
+ npm exec --package=skill-family-engineering-kit@0.19.2 -- skill-family-kit projection --root <repo>
71
+ npm exec --package=skill-family-engineering-kit@0.19.2 -- skill-family-kit check --root <repo>
77
72
  ```
78
73
 
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`.
74
+ 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.2 -- skill-family-kit --help`.
80
75
 
81
76
  ### Three adoption journeys
82
77
 
@@ -295,4 +290,4 @@ The candidate `runPluginVerification({ request, bindings, hostsRoot })` preserve
295
290
 
296
291
  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.
297
292
 
298
- Version 0.18.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.
293
+ Version 0.19.2 is the local source candidate. Remote availability must be established by the corresponding release-skill post-release evidence. Consume the three locally verified tarballs for candidate checks; 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,27 +5,22 @@
5
5
 
6
6
  # skill-family-engineering-kit
7
7
 
8
- <!-- release-skill:release-version: 0.19.0 -->
8
+ <!-- release-skill:release-version: 0.19.2 -->
9
9
 
10
10
  开发与 CI 阶段使用的工程工具包。**恰好四个**顶层命令,没有第五个:
11
11
 
12
12
  <!-- release-skill:managed:start id=latest-release -->
13
- **0.19.0** (2026-09-07)
13
+ **0.19.2** (2026-09-08)
14
14
 
15
- Engineering Kit 0.19.0 把新批量传输投影进官方离线 Bundle,并在内置能力目录登记 mechanism-batch 能力。
16
-
17
- **新增**
18
-
19
- - 官方 Bundle 投影携带 runMechanismCliBatch、--batch CLI 模式、两个机制批量 Schema 与冻结的批量容量政策,来源身份、摘要与完整性处理不变。
20
- - 能力目录新增 foundation.harness.mechanism-batch:since 0.19.0、stability candidate,并登记意图、失败语义与直接测试引用。
15
+ Engineering Kit 0.19.2 将包版本和生成投影与 Foundation Adoption Review 分发补丁对齐。公开命令和行为保持不变。
21
16
 
22
17
  **变更**
23
18
 
24
- - 采用指导补充批量选择规则:同进程调用保留既有对象入口;跨进程、相互独立且容量允许的 canonical-json 请求可作为批量候选;有依赖或超限请求保留原路径。
19
+ - 包版本、发布说明和必要生成投影与 Foundation 0.19.2 数值对齐,不增加命令、能力或 adapter 路径。
25
20
 
26
21
  **升级说明**
27
22
 
28
- 三个 Foundation 包须一起精确锁定到 0.19.0,升级后按既有包身份与 provenance 规则重建官方 Bundle。该目录条目为候选能力:目录命中不构成稳定采用声明。
23
+ 三个 Foundation 包须一起精确锁定到 0.19.2,并按既有来源身份与完整性规则重建官方 Bundle。能力目录、宿主 descriptor、driver、since 字段和成熟度均不变。
29
24
  <!-- release-skill:managed:end id=latest-release -->
30
25
 
31
26
  ### Foundation 0.15.0 candidate 资格入口
@@ -55,7 +50,7 @@ Kit 是「工程阶段」层,依赖 Harness 与 Contracts。它只做四件事
55
50
 
56
51
  ## 安装和最小示例
57
52
 
58
- 0.18.0 是本地候选版本。候选验证先把三个包分别打入同一个临时目录,再安装这三个精确 tarball:
53
+ 0.19.2 是本地源码候选。候选验证先把三个包分别打入同一个临时目录,再安装这三个精确 tarball:
59
54
 
60
55
  ```sh
61
56
  pack_dir="$(mktemp -d)"
@@ -63,21 +58,21 @@ pack_dir="$(mktemp -d)"
63
58
  (cd packages/skill-family-harness-node && pnpm pack --pack-destination "$pack_dir")
64
59
  (cd packages/skill-family-engineering-kit && pnpm pack --pack-destination "$pack_dir")
65
60
  mkdir "$pack_dir/consumer" && (cd "$pack_dir/consumer" && npm init -y)
66
- (cd "$pack_dir/consumer" && npm install "$pack_dir/skill-family-contracts-0.18.0.tgz" "$pack_dir/skill-family-harness-node-0.18.0.tgz" "$pack_dir/skill-family-engineering-kit-0.18.0.tgz")
61
+ (cd "$pack_dir/consumer" && npm install "$pack_dir/skill-family-contracts-0.19.2.tgz" "$pack_dir/skill-family-harness-node-0.19.2.tgz" "$pack_dir/skill-family-engineering-kit-0.19.2.tgz")
67
62
  ```
68
63
 
69
64
  发布后再使用 registry 坐标:
70
65
 
71
66
  ```sh
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>
67
+ npm install --save-dev skill-family-engineering-kit@0.19.2
68
+ npm exec --package=skill-family-engineering-kit@0.19.2 -- skill-family-kit --help
69
+ npm exec --package=skill-family-engineering-kit@0.19.2 -- skill-family-kit scaffold --root <empty-dir> --project-id my-project
70
+ npm exec --package=skill-family-engineering-kit@0.19.2 -- skill-family-kit adopt-plan --root <repo> --list-capabilities --all --scope all --locale zh-CN --uses ./uses.json
71
+ npm exec --package=skill-family-engineering-kit@0.19.2 -- skill-family-kit projection --root <repo>
72
+ npm exec --package=skill-family-engineering-kit@0.19.2 -- skill-family-kit check --root <repo>
78
73
  ```
79
74
 
80
- 以上四条命令分别覆盖生成骨架、只读盘点、受管投影与诊断;零安装形式可用 `npm exec --package=skill-family-engineering-kit@0.19.0 -- skill-family-kit --help`。
75
+ 以上四条命令分别覆盖生成骨架、只读盘点、受管投影与诊断;零安装形式可用 `npm exec --package=skill-family-engineering-kit@0.19.2 -- skill-family-kit --help`。
81
76
 
82
77
  ### 三条采用旅程
83
78
 
@@ -296,4 +291,4 @@ Foundation 本身不发起网络请求,但绑定的 executable 仍可能联网
296
291
 
297
292
  独立入口 `runSkillFamilyDirectoryVerification({ request, bindings })` 固定 Kimi 生产 argv 与窄环境,并拒绝调用方 observation。原始 parser 通过生产进程路径验证,但受控 fixture 事件不会被提升为 `observed`;缺少官方 typed mapping 时,公共结果保持 `indeterminate` 和 manual candidate。
298
293
 
299
- 0.18.0 为本地源码候选,尚未发布。消费本地已验证的三包 tarball;版本标记、单元测试或安装成功都不等于契约接入完成、迁移完成或真实宿主资格。
294
+ 0.19.2 是本地源码候选,远端可用性须由对应的 release-skill 发布后证据证明。候选检查使用本地已验证的三包 tarball;版本标记、单元测试或安装成功都不等于契约接入完成、迁移完成或真实宿主资格。
@@ -2243,12 +2243,14 @@
2243
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
2244
  ],
2245
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"
2246
+ "Request-byte, item-count, or structure preflight rejection invokes no mechanism and leaves stdout empty; the error stream receives one TypeError-projected batch error with details.kind batch-input-limit, batch-item-limit, or batch-structure-invalid respectively, and the batch exits 2",
2247
+ "Output-capacity rejection occurs after the current item returns; that item may already have executed, later items stop, stdout remains empty, details.kind is batch-output-limit, and the batch exits 2",
2248
+ "An output-channel failure exits 2 but may leave partial bytes sent; if the error channel also fails, delivery of the error object is not guaranteed",
2249
+ "Per-item mechanism failures are projected into that item's response and later items still run; at least one failure exits 2"
2248
2250
  ],
2249
2251
  "invariants": [
2250
2252
  "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"
2253
+ "The complete response bytes are not sent until confirmed within the output limit; after writing starts, bytes already sent cannot be withdrawn if the output channel fails; error objects are neither reordered nor normalized"
2252
2254
  ],
2253
2255
  "ownedByCaller": [
2254
2256
  "Domain grouping and capacity splitting, and judging dependencies between requests",
@@ -2242,12 +2242,14 @@
2242
2242
  "无(逐项经既有纯函数分派器执行;只写调用方提供的 output/error 流;无文件、网络、进程或残余状态副作用)"
2243
2243
  ],
2244
2244
  "failureSemantics": [
2245
- "整批结构或容量拒绝向 error 流写一个批次错误对象并整体退出 2(TypeError 投影;details.kind 封闭为 batch-structure-invalid、batch-item-limitbatch-input-limit、batch-output-limit)",
2246
- "单项机制失败按原 CLI 错误投影写入该项 response 并继续执行后续项;至少一项失败整体退出 2;不交付部分批次结果"
2245
+ "请求字节、输入项数或结构预检拒绝不会调用机制,stdout 为空;error 流接收一个 TypeError 投影的批次错误对象,details.kind 分别为 batch-input-limit、batch-item-limitbatch-structure-invalid,整体退出 2",
2246
+ "输出容量拒绝发生在当前项返回后;该项可能已经执行,后续项停止,stdout 为空;details.kind batch-output-limit,整体退出 2",
2247
+ "输出通道失败整体退出 2,但可能已有部分字节送出;若错误通道也失败,错误对象不保证能够交付",
2248
+ "单项机制失败按原 CLI 错误投影写入该项 response 并继续执行后续项;至少一项失败整体退出 2"
2247
2249
  ],
2248
2250
  "invariants": [
2249
2251
  "全部项的外层形状检查先于第一项执行;项顺序、重复项与逐项调用次数保持不变",
2250
- "完整响应字节在确认未超输出上限前不发送;错误对象不重新排序或规范化"
2252
+ "完整响应字节在确认未超输出上限前不发送;开始写入后发生输出通道失败时,已发送字节无法撤回;错误对象不重新排序或规范化"
2251
2253
  ],
2252
2254
  "ownedByCaller": [
2253
2255
  "领域分组与容量切分、请求间依赖关系的判断",
@@ -2243,12 +2243,14 @@
2243
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
2244
  ],
2245
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"
2246
+ "Request-byte, item-count, or structure preflight rejection invokes no mechanism and leaves stdout empty; the error stream receives one TypeError-projected batch error with details.kind batch-input-limit, batch-item-limit, or batch-structure-invalid respectively, and the batch exits 2",
2247
+ "Output-capacity rejection occurs after the current item returns; that item may already have executed, later items stop, stdout remains empty, details.kind is batch-output-limit, and the batch exits 2",
2248
+ "An output-channel failure exits 2 but may leave partial bytes sent; if the error channel also fails, delivery of the error object is not guaranteed",
2249
+ "Per-item mechanism failures are projected into that item's response and later items still run; at least one failure exits 2"
2248
2250
  ],
2249
2251
  "invariants": [
2250
2252
  "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"
2253
+ "The complete response bytes are not sent until confirmed within the output limit; after writing starts, bytes already sent cannot be withdrawn if the output channel fails; error objects are neither reordered nor normalized"
2252
2254
  ],
2253
2255
  "ownedByCaller": [
2254
2256
  "Domain grouping and capacity splitting, and judging dependencies between requests",
@@ -2242,12 +2242,14 @@
2242
2242
  "无(逐项经既有纯函数分派器执行;只写调用方提供的 output/error 流;无文件、网络、进程或残余状态副作用)"
2243
2243
  ],
2244
2244
  "failureSemantics": [
2245
- "整批结构或容量拒绝向 error 流写一个批次错误对象并整体退出 2(TypeError 投影;details.kind 封闭为 batch-structure-invalid、batch-item-limitbatch-input-limit、batch-output-limit)",
2246
- "单项机制失败按原 CLI 错误投影写入该项 response 并继续执行后续项;至少一项失败整体退出 2;不交付部分批次结果"
2245
+ "请求字节、输入项数或结构预检拒绝不会调用机制,stdout 为空;error 流接收一个 TypeError 投影的批次错误对象,details.kind 分别为 batch-input-limit、batch-item-limitbatch-structure-invalid,整体退出 2",
2246
+ "输出容量拒绝发生在当前项返回后;该项可能已经执行,后续项停止,stdout 为空;details.kind batch-output-limit,整体退出 2",
2247
+ "输出通道失败整体退出 2,但可能已有部分字节送出;若错误通道也失败,错误对象不保证能够交付",
2248
+ "单项机制失败按原 CLI 错误投影写入该项 response 并继续执行后续项;至少一项失败整体退出 2"
2247
2249
  ],
2248
2250
  "invariants": [
2249
2251
  "全部项的外层形状检查先于第一项执行;项顺序、重复项与逐项调用次数保持不变",
2250
- "完整响应字节在确认未超输出上限前不发送;错误对象不重新排序或规范化"
2252
+ "完整响应字节在确认未超输出上限前不发送;开始写入后发生输出通道失败时,已发送字节无法撤回;错误对象不重新排序或规范化"
2251
2253
  ],
2252
2254
  "ownedByCaller": [
2253
2255
  "领域分组与容量切分、请求间依赖关系的判断",
@@ -2032,7 +2032,7 @@
2032
2032
  <td><code>SFC2004</code></td>
2033
2033
  </tr>
2034
2034
  <tr>
2035
- <td><code>runMechanismCliBatch</code> / <code>mechanisms-cli.mjs --batch</code> (0.19.0 candidate)</td>
2035
+ <td><code>runMechanismCliBatch</code> / <code>mechanisms-cli.mjs --batch</code> (since 0.19.0, candidate)</td>
2036
2036
  <td>no</td>
2037
2037
  <td>no</td>
2038
2038
  <td>no</td>
@@ -2043,6 +2043,7 @@
2043
2043
  </tr>
2044
2044
  </tbody>
2045
2045
  </table>
2046
+ <p>The failure stage determines the observable effects of the batch entry point. Request-byte, item-count, and structure preflight rejection invokes no mechanism and leaves stdout empty. Output capacity can be checked only after the current item returns, so that item may already have executed; later items are not executed and stdout remains empty. An output-channel failure may leave partial bytes sent and returns 2. If the error channel also fails, delivery of the error object is not guaranteed.</p>
2046
2047
  <p>Harness's <code>HARNESS_EXCLUSIONS</code> explicitly excludes release-state, remote-network-access, business-semantics, workflow-orchestration, model-calls, git-writes.</p>
2047
2048
  <h2 id="Engineering-Kit-Engineering-Command-Layer">Engineering Kit (Engineering Command Layer)<a class="headerlink" href="#Engineering-Kit-Engineering-Command-Layer" title="Permanent link">&para;</a></h2>
2048
2049
  <table>
@@ -1792,17 +1792,17 @@
1792
1792
  <tbody>
1793
1793
  <tr>
1794
1794
  <td><code>skill-family-contracts</code></td>
1795
- <td>0.19.0</td>
1795
+ <td>0.19.2</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.19.0</td>
1800
+ <td>0.19.2</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.19.0</td>
1805
+ <td>0.19.2</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>
@@ -3699,10 +3699,10 @@ stable 承诺,Bundle 是否重建由既有包字节与 provenance 绑定输入
3699
3699
  </tbody>
3700
3700
  </table>
3701
3701
  <ul>
3702
- <li>失败语义:整批结构或容量拒绝在 <code>error</code> 流写一个批次错误对象并整体退出 2,不执行任何项、不交付部分结果;错误为 <code>TypeError</code> 投影,<code>details.kind</code> 封闭为 <code>batch-structure-invalid</code>、<code>batch-item-limit</code>、<code>batch-input-limit</code>、<code>batch-output-limit</code>,不新增 SFC 错误码。畸形 UTF-8、畸形 JSON 与输入流错误属传输失败,保留原异常投影,不伪装为机制业务失败、不伪造某个 <code>inputIndex</code>。单项机制失败(含 unsafe integer 等留给原分派器按项判断的约束)经原 CLI 错误投影写入该项 <code>response</code> 并继续执行后续项。输出流写入失败时已发送字节无法撤回,消费者必须把截断 JSON、通道错误或进程无正常完成结果判为传输失败,不能从前缀认定批次成功。</li>
3703
- <li>整体退出码三分支:所有机制项成功 → 0,stdout 为完整批次结果加一个换行、stderr 空;至少一个机制项失败 → 2,stdout 仍为完整批次结果、stderr 空;输入/结构/容量/传输检查失败 → 2stdout 空、stderr 为一个批次错误对象与换行。</li>
3702
+ <li>失败语义:请求字节、输入项数或结构的预检拒绝在任何机制调用前发生,stdout 为空,<code>error</code> 流写一个批次错误对象并整体退出 2。输出容量只能在当前项已经返回后确认;超限时停止后续项,stdout 仍为空,<code>error</code> 流写批次错误对象并退出 2。错误为 <code>TypeError</code> 投影,<code>details.kind</code> 封闭为 <code>batch-structure-invalid</code>、<code>batch-item-limit</code>、<code>batch-input-limit</code>、<code>batch-output-limit</code>,不新增 SFC 错误码。畸形 UTF-8、畸形 JSON 与输入流错误属传输失败,保留原异常投影,不伪装为机制业务失败、不伪造某个 <code>inputIndex</code>。单项机制失败(含 unsafe integer 等留给原分派器按项判断的约束)经原 CLI 错误投影写入该项 <code>response</code> 并继续执行后续项。输出通道失败时可能已有部分字节送出;整体退出 2,消费者必须把截断 JSON、通道错误或进程无正常完成结果判为传输失败,不能从前缀认定批次成功。若连错误通道也写入失败,错误对象可能无法交付。</li>
3703
+ <li>整体退出码三分支:所有机制项成功 → 0,stdout 为完整批次结果加一个换行、stderr 空;至少一个机制项失败 → 2,stdout 仍为完整批次结果、stderr 空;批次预检、输出容量或传输失败 → 2。预检与输出容量失败时 stdout 空、stderr 为一个批次错误对象与换行;输出通道失败时不承诺收回已经发送的字节。</li>
3704
3704
  <li>前置条件与信任锚:Contracts、Harness 与 Engineering Kit 精确锁定同一版本;程序化函数与 CLI 都经调用方已安装并验证来源的官方 Bundle 消费(Bundle 由同版本三包生成,保留来源身份、摘要与完整性检查),不从 Foundation 工作树导入源码;调用方提供 input/output/error 流。已有 Schema 批量校验(<code>validate-many-by-schema-id</code>)继续使用原入口,不嵌套、不重新包装。</li>
3705
- <li><code>since</code> / <code>stability</code>:<code>0.19.0</code> / <code>candidate</code>。尚未发布、尚未 stable;候选测试通过不自动产生 stable 承诺,任何文档不得把该能力写成已发布稳定能力。</li>
3705
+ <li><code>since</code> / <code>stability</code>:<code>0.19.0</code> / <code>candidate</code>。<code>candidate</code> 不等于 <code>stable</code>,本地候选测试通过也不改变成熟度;是否发布须查对应版本的发布后验证证据,不能从 <code>stability</code> 推断。</li>
3706
3706
  <li>源文件:Contracts 新 Schema <code>packages/skill-family-contracts/candidate/foundation-mechanisms/mechanism-batch-request.schema.json</code>、<code>mechanism-batch-result.schema.json</code> 与容量权威 <code>mechanism-batch-policy.json</code>;Harness <code>packages/skill-family-harness-node/candidate/mechanisms-cli.mjs</code>;Kit 离线 Bundle 投影 <code>packages/skill-family-engineering-kit/candidate/profile-bundle.mjs</code>。</li>
3707
3707
  <li>正例/负例测试:<code>packages/skill-family-contracts/test/quickstart-profile.test.mjs</code>、<code>packages/skill-family-harness-node/test/quickstart-profile.test.mjs</code>、<code>packages/skill-family-engineering-kit/test/candidate-mechanisms-cli.test.mjs</code>、<code>packages/skill-family-engineering-kit/test/candidate-profile-bundle.test.mjs</code>。</li>
3708
3708
  <li>调用方仍拥有的业务语义:领域分组与容量切分、请求间依赖关系判断、精确 pin 与来源身份绑定、批次采用完成与领域回归判定。逐项迁移示例:把若干 <code>{ "operation": "canonical-json", "params": { "document": ... } }</code> 单请求合并为 <code>{ "operation": "canonical-json", "inputs": [{ "document": ... }, ...] }</code>,再按 <code>results[i].inputIndex</code> 读回逐项 <code>response</code> 与 <code>exitCode</code>;同一 Node 进程内的直接调用继续使用 <code>invokeFoundationMechanism</code>,不被强制改成批量。</li>
@@ -2022,7 +2022,7 @@
2022
2022
  <td><code>SFC2004</code></td>
2023
2023
  </tr>
2024
2024
  <tr>
2025
- <td><code>runMechanismCliBatch</code> / <code>mechanisms-cli.mjs --batch</code>(0.19.0 candidate)</td>
2025
+ <td><code>runMechanismCliBatch</code> / <code>mechanisms-cli.mjs --batch</code>(since 0.19.0candidate)</td>
2026
2026
  <td>否</td>
2027
2027
  <td>否</td>
2028
2028
  <td>否</td>
@@ -2033,6 +2033,7 @@
2033
2033
  </tr>
2034
2034
  </tbody>
2035
2035
  </table>
2036
+ <p>批量入口的失败阶段决定可观察副作用。请求字节、输入项数或结构的预检拒绝不会调用机制,stdout 为空;输出容量只能在当前项返回后确认,因此该项可能已经执行,但后续项不会再执行,stdout 仍为空。输出通道失败时可能已有部分字节送出,整体退出 2;若错误通道也失败,错误对象不保证能够交付。</p>
2036
2037
  <p>Harness 的 <code>HARNESS_EXCLUSIONS</code> 明确排除 release-state、remote-network-access、business-semantics、workflow-orchestration、model-calls、git-writes。</p>
2037
2038
  <h2 id="Engineering-Kit工程命令层">Engineering Kit(工程命令层)<a class="headerlink" href="#Engineering-Kit工程命令层" title="Permanent link">&para;</a></h2>
2038
2039
  <table>