skill-family-engineering-kit 0.4.0 → 0.5.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 CHANGED
@@ -1,5 +1,25 @@
1
1
  # Changelog
2
2
 
3
+ <!-- release-skill:changelog:start version=0.5.0 locale=en baseline=sha256:f83b9c3442e5391149531b198be25131cf45728ff945d4ffc531342996e4e6f3 -->
4
+ ## [0.5.0] - 2026-08-16
5
+
6
+ This release keeps the stable four-command Kit surface unchanged and strengthens the offline-consumer verification gates to cover the complete third-party production closure of the three Foundation packages.
7
+
8
+ ### Added
9
+
10
+ - Strengthens the offline-consumer verification gates: the third-party closure derivation in candidate-profile-bundle and tarball-source-binding tests is extended from a single-package closure to the complete production closure of the three Foundation packages (identity-deduplicated, npm: alias-aware, range-scoped override selectors, byte identity against the real store directory of pnpm), so the harness runtime-dependency review decision (FND-ADR-011) is continuously verified against the real installed bytes.
11
+
12
+ ### Changed
13
+
14
+ - Keeps the stable scaffold, adopt-plan, projection, and check commands unchanged.
15
+ - Carries forward the 0.4.0 adoption CLI candidate and the Quickstart Profile v2 offline bundle; no Kit surface or candidate entry point is added or removed in 0.5.0.
16
+
17
+ ### Upgrade Notes
18
+
19
+ Version 0.5.0 is released on npm and the public mirror. The Kit public surface is unchanged from 0.4.0; pin the package to exactly 0.5.0 for the new contract-spec 1.5.0 line.
20
+ <!-- release-skill:changelog:end version=0.5.0 locale=en -->
21
+
22
+
3
23
  <!-- release-skill:changelog:start version=0.4.0 locale=en baseline=sha256:b75bcca6a62cddc63d0a8d88faf268415aec803bcf00e04aacd797907d1ea6e8 -->
4
24
  ## [0.4.0] - 2026-08-16
5
25
 
@@ -1,5 +1,25 @@
1
1
  # 变更日志
2
2
 
3
+ <!-- release-skill:changelog:start version=0.5.0 locale=zh-CN baseline=sha256:bdeefb2e456f6e9d1348152b464c701e96a739e514c5a08ca3576e9982e9b7e0 -->
4
+ ## [0.5.0] - 2026-08-16
5
+
6
+ 本版保持 Kit 稳定四命令边界不变,并把离线消费者验证门加固为覆盖三个 Foundation 包的完整第三方生产闭包。
7
+
8
+ ### 新增
9
+
10
+ - 加固离线消费者验证门:candidate-profile-bundle 与 tarball-source-binding 测试中的第三方闭包推导从单包闭包扩展为三个 Foundation 包的完整生产闭包(真实身份去重、npm: 别名感知、range-scoped override selector、对 pnpm 真实本地存储目录的字节身份),使 harness 运行时依赖评审决策(FND-ADR-011)持续对着真实安装字节被验证。
11
+
12
+ ### 变更
13
+
14
+ - 稳定四命令(scaffold、adopt-plan、projection、check)保持不变。
15
+ - 延续 0.4.0 的 adoption CLI 候选与 Quickstart Profile v2 离线 Bundle;0.5.0 未新增或移除任何 Kit 边界或候选入口。
16
+
17
+ ### 升级说明
18
+
19
+ 0.5.0 已发布到 npm 与 public 镜像仓。Kit 公开面与 0.4.0 相同;面向新的契约规格 1.5.0 线请把包精确锁定为 0.5.0。
20
+ <!-- release-skill:changelog:end version=0.5.0 locale=zh-CN -->
21
+
22
+
3
23
  <!-- release-skill:changelog:start version=0.4.0 locale=zh-CN baseline=sha256:0305934fb2f833eff10b17014f551533bfca9e9e51d3820a5a1e62613a3edb6a -->
4
24
  ## [0.4.0] - 2026-08-16
5
25
 
package/README.md CHANGED
@@ -4,28 +4,27 @@
4
4
 
5
5
  # skill-family-engineering-kit
6
6
 
7
- <!-- release-skill:release-version: 0.4.0 -->
7
+ <!-- release-skill:release-version: 0.5.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.4.0** (2026-08-16)
12
+ **0.5.0** (2026-08-16)
13
13
 
14
- This release adds the candidate adoption CLI and adoption mechanisms to the Engineering Kit while preserving the stable four-command surface and the 0.3.0 offline bundle.
14
+ This release keeps the stable four-command Kit surface unchanged and strengthens the offline-consumer verification gates to cover the complete third-party production closure of the three Foundation packages.
15
15
 
16
16
  **Added**
17
17
 
18
- - Adds the adoption-cli candidate, a stdin/stdout CLI that assesses adoption bindings, legacy exit lists, and legacy references through the migration manifest, and verifies managed-bundle identity and harness surface inventory.
19
- - Adds the adoption-mechanisms candidate module as the shared implementation behind the adoption CLI.
18
+ - Strengthens the offline-consumer verification gates: the third-party closure derivation in candidate-profile-bundle and tarball-source-binding tests is extended from a single-package closure to the complete production closure of the three Foundation packages (identity-deduplicated, npm: alias-aware, range-scoped override selectors, byte identity against the real store directory of pnpm), so the harness runtime-dependency review decision (FND-ADR-011) is continuously verified against the real installed bytes.
20
19
 
21
20
  **Changed**
22
21
 
23
22
  - Keeps the stable scaffold, adopt-plan, projection, and check commands unchanged.
24
- - Carries forward the 0.3.0 Quickstart Profile v2 offline bundle (standalone validators selected by schema $id, full provenance recording) and the candidate plugin skill naming checker.
23
+ - Carries forward the 0.4.0 adoption CLI candidate and the Quickstart Profile v2 offline bundle; no Kit surface or candidate entry point is added or removed in 0.5.0.
25
24
 
26
25
  **Upgrade Notes**
27
26
 
28
- Version 0.4.0 is released on npm and the public mirror. The adoption CLI is a candidate entry point; invoke it through its explicit candidate subpath and pin the package to exactly 0.4.0.
27
+ Version 0.5.0 is released on npm and the public mirror. The Kit public surface is unchanged from 0.4.0; pin the package to exactly 0.5.0 for the new contract-spec 1.5.0 line.
29
28
  <!-- release-skill:managed:end id=latest-release -->
30
29
 
31
30
  | Command | Purpose | Side effects |
@@ -46,7 +45,7 @@ Kit is the "engineering stage" layer, depending on the Harness and Contracts. It
46
45
  ## Installation and Minimal Example
47
46
 
48
47
  ```sh
49
- npm install --save-dev skill-family-engineering-kit@0.4.0
48
+ npm install --save-dev skill-family-engineering-kit@0.5.0
50
49
  npm exec -- skill-family-kit --help
51
50
  npm exec -- skill-family-kit scaffold --root <empty-dir> --project-id my-project
52
51
  npm exec -- skill-family-kit adopt-plan --root <repo>
@@ -54,7 +53,7 @@ npm exec -- skill-family-kit projection --root <repo>
54
53
  npm exec -- skill-family-kit check --root <repo>
55
54
  ```
56
55
 
57
- The four commands above cover skeleton generation, read-only inventory, managed projection, and diagnostics respectively; a zero-install form is available via `npm exec --package=skill-family-engineering-kit@0.4.0 -- skill-family-kit --help`.
56
+ 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.5.0 -- skill-family-kit --help`.
58
57
 
59
58
  ### Report sub-action
60
59
 
package/README.zh-CN.md CHANGED
@@ -5,28 +5,27 @@
5
5
 
6
6
  # skill-family-engineering-kit
7
7
 
8
- <!-- release-skill:release-version: 0.4.0 -->
8
+ <!-- release-skill:release-version: 0.5.0 -->
9
9
 
10
10
  开发与 CI 阶段使用的工程工具包。**恰好四个**顶层命令,没有第五个:
11
11
 
12
12
  <!-- release-skill:managed:start id=latest-release -->
13
- **0.4.0** (2026-08-16)
13
+ **0.5.0** (2026-08-16)
14
14
 
15
- 本版为 Engineering Kit 新增候选 adoption CLI 与 adoption mechanisms,同时保持稳定四命令边界与 0.3.0 的离线 Bundle 不变。
15
+ 本版保持 Kit 稳定四命令边界不变,并把离线消费者验证门加固为覆盖三个 Foundation 包的完整第三方生产闭包。
16
16
 
17
17
  **新增**
18
18
 
19
- - 新增 adoption-cli 候选:基于 stdin/stdout CLI,通过 migration manifest 评估 adoption 绑定、遗留 exit list 与遗留引用,并校验 managed-bundle 身份与 harness 表面清单。
20
- - 新增 adoption-mechanisms 候选模块,作为 adoption CLI 的共享实现。
19
+ - 加固离线消费者验证门:candidate-profile-bundle tarball-source-binding 测试中的第三方闭包推导从单包闭包扩展为三个 Foundation 包的完整生产闭包(真实身份去重、npm: 别名感知、range-scoped override selector、对 pnpm 真实本地存储目录的字节身份),使 harness 运行时依赖评审决策(FND-ADR-011)持续对着真实安装字节被验证。
21
20
 
22
21
  **变更**
23
22
 
24
23
  - 稳定四命令(scaffold、adopt-plan、projection、check)保持不变。
25
- - 延续 0.3.0 的 Quickstart Profile v2 离线 Bundle(按 schema $id 选择的 standalone validator、完整 provenance 记录)与候选插件技能命名检查器。
24
+ - 延续 0.4.0 的 adoption CLI 候选与 Quickstart Profile v2 离线 Bundle;0.5.0 未新增或移除任何 Kit 边界或候选入口。
26
25
 
27
26
  **升级说明**
28
27
 
29
- 0.4.0 已发布到 npm 与 public 镜像仓。adoption CLI 是候选入口,须经显式 candidate 子路径调用,并把包精确锁定为 0.4.0。
28
+ 0.5.0 已发布到 npm 与 public 镜像仓。Kit 公开面与 0.4.0 相同;面向新的契约规格 1.5.0 线请把包精确锁定为 0.5.0。
30
29
  <!-- release-skill:managed:end id=latest-release -->
31
30
 
32
31
  | 命令 | 用途 | 副作用 |
@@ -47,7 +46,7 @@ Kit 是「工程阶段」层,依赖 Harness 与 Contracts。它只做四件事
47
46
  ## 安装和最小示例
48
47
 
49
48
  ```sh
50
- npm install --save-dev skill-family-engineering-kit@0.4.0
49
+ npm install --save-dev skill-family-engineering-kit@0.5.0
51
50
  npm exec -- skill-family-kit --help
52
51
  npm exec -- skill-family-kit scaffold --root <empty-dir> --project-id my-project
53
52
  npm exec -- skill-family-kit adopt-plan --root <repo>
@@ -55,7 +54,7 @@ npm exec -- skill-family-kit projection --root <repo>
55
54
  npm exec -- skill-family-kit check --root <repo>
56
55
  ```
57
56
 
58
- 以上四条命令分别覆盖生成骨架、只读盘点、受管投影与诊断;零安装形式可用 `npm exec --package=skill-family-engineering-kit@0.4.0 -- skill-family-kit --help`。
57
+ 以上四条命令分别覆盖生成骨架、只读盘点、受管投影与诊断;零安装形式可用 `npm exec --package=skill-family-engineering-kit@0.5.0 -- skill-family-kit --help`。
59
58
 
60
59
  ### 报告子动作
61
60
 
@@ -684,7 +684,7 @@
684
684
  },
685
685
  {
686
686
  "id": "foundation.harness.surface-scan",
687
- "intent": "Scan a declared surface for path and content patterns according to a policy contract document; the first hit fails closed, and an invalid policy also fails closed",
687
+ "intent": "Scan a declared surface for path and content patterns under a policy contract; the first hit fails closed, invalid policies also fail closed. It is the execution-core generalization projection of the same mechanism family as the structured scanner, carrying no private identity or approval-list interpretation",
688
688
  "useWhen": [
689
689
  "Need to scan a set of contained files for path or content patterns under a configurable policy",
690
690
  "Need an injection self-test with byte-recoverable results to prove the scanner is stateless"
@@ -719,6 +719,79 @@
719
719
  "Business forbidden words and exemption decisions: keep with the consumer"
720
720
  ]
721
721
  },
722
+ {
723
+ "id": "foundation.harness.declared-read-surface",
724
+ "intent": "Assert that every node:fs named import inside the declared module set is contained in the consumer-declared read surface; the conservative syntax-surface approximation also covers fs API text in comments and strings, with no execution",
725
+ "useWhen": [
726
+ "Need a no-execution assertion that all filesystem reads come from declared readers",
727
+ "Need fail-closed guarantees against undeclared fs modules and write-family fs APIs"
728
+ ],
729
+ "doNotUseWhen": [
730
+ "Need runtime behavior analysis beyond the static import syntax surface"
731
+ ],
732
+ "prerequisites": [
733
+ "A declared module-to-API mapping; modules are analyzed by syntax only"
734
+ ],
735
+ "inputs": [
736
+ "Workspace root and declaredReaders mapping"
737
+ ],
738
+ "outputs": [
739
+ "A declared-read-surface-result contract object with violations from a closed rule set"
740
+ ],
741
+ "sideEffects": [
742
+ "Read-only syntax scan, no execution"
743
+ ],
744
+ "failureSemantics": [
745
+ "Violations fail closed in the result; illegal inputs throw declared-read-surface-invalid"
746
+ ],
747
+ "invariants": [
748
+ "Syntax-surface only, conservative approximation, no execution, no model calls, no network access",
749
+ "guarantees is a closed enumeration and the result carries no timestamp"
750
+ ],
751
+ "ownedByCaller": [
752
+ "Declared reader sets and post-violation disposition"
753
+ ],
754
+ "routeElsewhere": [
755
+ "Runtime behavior, dynamic imports, and write enforcement: beyond this primitive"
756
+ ]
757
+ },
758
+ {
759
+ "id": "foundation.harness.structured-scan",
760
+ "intent": "Scan a declared surface with structural semantics under a structured-scan-policy contract: IP-shaped candidates enter a single standard parse entry with CIDR approval, coordinates, registries, and hosts need approval, format adapters (pnpm-lockfile, tree-json) parse structurally, binary and symlink policies fail closed; the first hit fails closed, invalid policies also fail closed. It is the public, consumer-parameterized form of the same mechanism family as scanSurface, with no private identity, path, or approval-list interpretation",
761
+ "useWhen": [
762
+ "Need to scan lockfiles, JSON trees, or text for addresses, coordinates, registries, and hosts under consumer-declared approvals",
763
+ "Need deterministic structure-aware scanning with no position-level exemptions"
764
+ ],
765
+ "doNotUseWhen": [
766
+ "Need workspace-private facts interpreted (managed-path interpretation stays with the consumer)",
767
+ "Need credential-pattern or lockfile-integrity-shape rules (outside the closed vocabulary)"
768
+ ],
769
+ "prerequisites": [
770
+ "A structured-scan-policy contract document with valid CIDRs and compilable patterns"
771
+ ],
772
+ "inputs": [
773
+ "Scan root, relative-path list, and structured-scan-policy document"
774
+ ],
775
+ "outputs": [
776
+ "A { scanned, bytes, policy } result object"
777
+ ],
778
+ "sideEffects": [
779
+ "Read-only except one temporary pnpm-lock.yaml copy under the OS temp directory, removed afterwards"
780
+ ],
781
+ "failureSemantics": [
782
+ "Hits throw structured-scan-violation with details.rule from the closed nine-rule vocabulary; invalid policies throw structured-scan-invalid"
783
+ ],
784
+ "invariants": [
785
+ "The closed rule vocabulary is never silently skipped; unparseable IP-shaped tokens fail closed",
786
+ "Symlinks are never followed; parse failures fail closed"
787
+ ],
788
+ "ownedByCaller": [
789
+ "Approval lists, adapter selection, and post-hit disposition"
790
+ ],
791
+ "routeElsewhere": [
792
+ "Workspace layout facts, lockfile integrity guarantees, and credential patterns: keep with the consumer"
793
+ ]
794
+ },
722
795
  {
723
796
  "id": "foundation.harness.token-estimation",
724
797
  "intent": "Provide a deterministic upper-bound estimate for text: a pure UTF-8 byte-count function with no model, network, or tokenizer dependency",
@@ -440,6 +440,45 @@
440
440
  "packages/skill-family-harness-node/test/surface-scan.test.mjs"
441
441
  ]
442
442
  },
443
+ {
444
+ "id": "foundation.harness.declared-read-surface",
445
+ "package": "skill-family-harness-node",
446
+ "layer": "harness",
447
+ "since": "0.5.0",
448
+ "stability": "stable",
449
+ "entrypoints": [
450
+ "assertDeclaredReadSurface (packages/skill-family-harness-node/src/declared-read-surface.mjs)"
451
+ ],
452
+ "sourceRefs": [
453
+ "packages/skill-family-harness-node/src/declared-read-surface.mjs"
454
+ ],
455
+ "positiveTestRefs": [
456
+ "packages/skill-family-harness-node/test/declared-read-surface.test.mjs"
457
+ ],
458
+ "negativeTestRefs": [
459
+ "packages/skill-family-harness-node/test/declared-read-surface.test.mjs"
460
+ ]
461
+ },
462
+ {
463
+ "id": "foundation.harness.structured-scan",
464
+ "package": "skill-family-harness-node",
465
+ "layer": "harness",
466
+ "since": "0.5.0",
467
+ "stability": "stable",
468
+ "entrypoints": [
469
+ "scanSurfaceStructured (packages/skill-family-harness-node/src/structured-scan.mjs)",
470
+ "STRUCTURED_SCAN_RULES (packages/skill-family-harness-node/src/structured-scan.mjs)"
471
+ ],
472
+ "sourceRefs": [
473
+ "packages/skill-family-harness-node/src/structured-scan.mjs"
474
+ ],
475
+ "positiveTestRefs": [
476
+ "packages/skill-family-harness-node/test/structured-scan.test.mjs"
477
+ ],
478
+ "negativeTestRefs": [
479
+ "packages/skill-family-harness-node/test/structured-scan.test.mjs"
480
+ ]
481
+ },
443
482
  {
444
483
  "id": "foundation.harness.token-estimation",
445
484
  "package": "skill-family-harness-node",
@@ -684,7 +684,7 @@
684
684
  },
685
685
  {
686
686
  "id": "foundation.harness.surface-scan",
687
- "intent": "按策略契约文档对声明表面做路径与内容模式扫描,首个命中即失败关闭,策略非法也失败关闭",
687
+ "intent": "按策略契约文档对声明表面做路径与内容模式扫描,首个命中即失败关闭,策略非法同样失败关闭。它是与结构化扫描器同一机制族的执行内核通用化投影,不携带任何私有身份或批准清单解释",
688
688
  "useWhen": [
689
689
  "需要按可配置策略扫描一组受收容文件的路径或内容模式",
690
690
  "需要注入后字节可恢复的自测证明扫描器无状态"
@@ -719,6 +719,79 @@
719
719
  "业务禁词与豁免判定:留在消费者"
720
720
  ]
721
721
  },
722
+ {
723
+ "id": "foundation.harness.declared-read-surface",
724
+ "intent": "断言声明模块集内的每个 node:fs 具名导入都落在消费者声明的读取表面内;保守的语法面近似同样覆盖注释与字符串中的 fs API 文本,且不执行任何代码",
725
+ "useWhen": [
726
+ "需要在不执行的前提下断言所有文件系统读取来自已声明读取器",
727
+ "需要对未声明 fs 模块与写族 fs API 的失败关闭保证"
728
+ ],
729
+ "doNotUseWhen": [
730
+ "需要超出静态导入语法面的运行时行为分析"
731
+ ],
732
+ "prerequisites": [
733
+ "一份模块到 API 的声明映射;模块仅按语法分析"
734
+ ],
735
+ "inputs": [
736
+ "工作区根与 declaredReaders 映射"
737
+ ],
738
+ "outputs": [
739
+ "declared-read-surface-result 契约对象,违规项来自闭集规则集"
740
+ ],
741
+ "sideEffects": [
742
+ "只读语法扫描,不执行代码"
743
+ ],
744
+ "failureSemantics": [
745
+ "违规在结果中失败关闭;非法输入抛出 declared-read-surface-invalid"
746
+ ],
747
+ "invariants": [
748
+ "仅语法面、保守近似、不执行、无模型调用、无网络访问",
749
+ "guarantees 是闭集枚举,结果不携带时间戳"
750
+ ],
751
+ "ownedByCaller": [
752
+ "声明读取器集合与违规后的处置"
753
+ ],
754
+ "routeElsewhere": [
755
+ "运行时行为、动态导入与写强制:超出本原语范围"
756
+ ]
757
+ },
758
+ {
759
+ "id": "foundation.harness.structured-scan",
760
+ "intent": "按 structured-scan-policy 契约对声明表面做结构化语义扫描:IP 形候选统一进入单一标准解析入口并按 CIDR 批准,坐标、注册表与主机需批准,格式适配器(pnpm-lockfile、tree-json)结构化解析,二进制与符号链接策略失败关闭;首个命中即失败关闭,策略非法同样失败关闭。它与 scanSurface 属同一机制族,是公开、消费者参数化的形态,自身不解释任何私有身份、路径或批准清单",
761
+ "useWhen": [
762
+ "需要按消费者声明的批准项扫描锁文件、JSON 树或文本中的地址、坐标、注册表与主机",
763
+ "需要无位置级豁免的确定性结构化扫描"
764
+ ],
765
+ "doNotUseWhen": [
766
+ "需要机制解释工作区私有事实(托管路径解释留在消费者侧)",
767
+ "需要凭据模式或锁文件完整性形状规则(不在闭集词汇表内)"
768
+ ],
769
+ "prerequisites": [
770
+ "一份 CIDR 合法、模式可编译的 structured-scan-policy 契约文档"
771
+ ],
772
+ "inputs": [
773
+ "扫描根、相对路径清单与 structured-scan-policy 文档"
774
+ ],
775
+ "outputs": [
776
+ "{ scanned, bytes, policy } 结果对象"
777
+ ],
778
+ "sideEffects": [
779
+ "只读;唯一的写入是 OS 临时目录下的一份 pnpm-lock.yaml 临时副本,用后即删"
780
+ ],
781
+ "failureSemantics": [
782
+ "命中抛出 structured-scan-violation,details.rule 来自闭集九规则词汇表;策略非法抛出 structured-scan-invalid"
783
+ ],
784
+ "invariants": [
785
+ "闭集规则词汇表永不静默跳过;不可解析的 IP 形 token 失败关闭",
786
+ "永不跟随符号链接;解析失败失败关闭"
787
+ ],
788
+ "ownedByCaller": [
789
+ "批准清单、适配器选择与命中后的处置"
790
+ ],
791
+ "routeElsewhere": [
792
+ "工作区布局事实、锁文件完整性保证与凭据模式:留在消费者侧"
793
+ ]
794
+ },
722
795
  {
723
796
  "id": "foundation.harness.token-estimation",
724
797
  "intent": "对文本内容给出确定性上界估算:UTF-8 字节数纯函数,无模型、无网络、无 tokenizer 依赖",
@@ -1972,7 +1972,7 @@ Contracts(结构、协议、错误码、协议名登记)
1972
1972
  <tbody>
1973
1973
  <tr>
1974
1974
  <td>Contracts</td>
1975
- <td>结构、协议、错误码、协议名登记;20 类顶层对象;9 条 mandatory rule</td>
1975
+ <td>结构、协议、错误码、协议名登记;22 类顶层对象;9 条 mandatory rule</td>
1976
1976
  <td>业务字段语义、领域审计、远端写入、模型生成</td>
1977
1977
  </tr>
1978
1978
  <tr>
@@ -2077,12 +2077,12 @@ Contracts(结构、协议、错误码、协议名登记)
2077
2077
  <p>三包结构保持、不拆第四包(FND-ADR-007);制品治理采用 artifact-graph CLI 与版本锁(FND-ADR-006)。</p>
2078
2078
  <h2 id="首版预算">首版预算<a class="headerlink" href="#首版预算" title="Permanent link">&para;</a></h2>
2079
2079
  <ul>
2080
- <li>顶层 Contracts 对象:20 类(完整清单以 <code>packages/skill-family-contracts/src/registry.json</code> 为唯一真源):project-manifest、profile-descriptor、managed-file-lock、operation-request、operation-result、migration-manifest、adapter-source、report-model、report-binding、host-descriptor、host-registry、host-capability-fact、host-probe-result、adapter-build-manifest、host-operation-plan、host-operation-receipt、state-event-envelope、state-snapshot-metadata、token-estimate-result、surface-scan-policy;</li>
2080
+ <li>顶层 Contracts 对象:22 类(完整清单以 <code>packages/skill-family-contracts/src/registry.json</code> 为唯一真源):project-manifest、profile-descriptor、managed-file-lock、operation-request、operation-result、migration-manifest、adapter-source、report-model、report-binding、host-descriptor、host-registry、host-capability-fact、host-probe-result、adapter-build-manifest、host-operation-plan、host-operation-receipt、state-event-envelope、state-snapshot-metadata、token-estimate-result、surface-scan-policy、declared-read-surface-result、structured-scan-policy(FND-ADR-010/011);</li>
2081
2081
  <li>Kit 顶层命令:4 个(scaffold、adopt-plan、projection、check);</li>
2082
2082
  <li>强制机械规则:当前 9 条,预算不超过 20 条,绝对上限 30 条;CR-001 对登记表内全部 Schema 做统一编译;</li>
2083
2083
  <li>叶子包:3 个(skill-family-contracts、skill-family-harness-node、skill-family-engineering-kit);</li>
2084
2084
  <li>Schema 校验器:Ajv 8.20.0(精确版本 pin),支持 draft-07 与 2020-12 双方言;</li>
2085
- <li>kernel 协议:skill-family.kernel.operation(stable),Contracts 版本 1.4.0;</li>
2085
+ <li>kernel 协议:skill-family.kernel.operation(stable),Contracts 版本 1.5.0;</li>
2086
2086
  <li>默认运行时语言:Node;第二语言实现首版为 0。</li>
2087
2087
  </ul>
2088
2088
  <p>任何新增组件必须说明删除它会导致的两个以上真实消费者重复实现,并通过独立 fixture 验证。</p>
@@ -1796,7 +1796,7 @@
1796
1796
  isolation-and-lockfile.md 隔离安装与包锁验证设计
1797
1797
  independence.md 独立性声明与机械证明
1798
1798
  schemas/audit-evidence.schema.json 证据文档的 JSON Schema(审计自有)
1799
- baseline/contracts-1.4.0.pin.json Contracts 1.4.0 现行基线 pin(摘要+事实)
1799
+ baseline/contracts-1.5.0.pin.json Contracts 1.5.0 现行基线 pin(摘要+事实)
1800
1800
  baseline/contracts-1.1.1.pin.json Contracts 1.1.1 只读兼容存档 pin
1801
1801
  baseline/contracts-1.1.0.pin.json Contracts 1.1.0 只读兼容存档 pin
1802
1802
  baseline/contracts-1.0.0.pin.json Contracts 1.0.0 只读兼容存档 pin
@@ -1769,7 +1769,7 @@
1769
1769
  <tbody>
1770
1770
  <tr>
1771
1771
  <td><code>contractsVersion</code></td>
1772
- <td>Contracts 冻结版本(当前 <code>1.4.0</code>)</td>
1772
+ <td>Contracts 冻结版本(当前 <code>1.5.0</code>)</td>
1773
1773
  <td>机器契约内容的版本</td>
1774
1774
  </tr>
1775
1775
  <tr>
@@ -1784,7 +1784,7 @@
1784
1784
  </tr>
1785
1785
  </tbody>
1786
1786
  </table>
1787
- <p>三者都由 <code>describeAuditSurface()</code> 一次性给出,审计侧把它们与基线 pin(当前为 <code>baseline/contracts-1.4.0.pin.json</code>)比对。</p>
1787
+ <p>三者都由 <code>describeAuditSurface()</code> 一次性给出,审计侧把它们与基线 pin(当前为 <code>baseline/contracts-1.5.0.pin.json</code>)比对。</p>
1788
1788
  <h2 id="兼容规则">兼容规则<a class="headerlink" href="#兼容规则" title="Permanent link">&para;</a></h2>
1789
1789
  <p>一个被消费的 Contracts 包与某个基线 pin <strong>兼容</strong>,当且仅当同时满足:</p>
1790
1790
  <ol>
@@ -1839,7 +1839,8 @@
1839
1839
  <li><strong>Contracts 1.1.1(2026-08-05)</strong>:仅描述补丁(migration-manifest schema 三处 description 改写为稳定产品语义;无任何校验关键字、公开 API、错误码、规则或引擎参数变化)。按本生命周期新增 <code>contracts-1.1.1.pin.json</code> 为现行基线,<code>contracts-1.1.0.pin.json</code> 转为只读兼容存档。1.1.1 pin 相对 1.1.0 pin 的准确事实:<strong>校验语义和事实清单不变</strong>(<code>facts</code> 逐项一致);四个 Contracts 文档(registry、error-codes、rules、kernel-protocol)因内嵌 <code>contractsVersion</code> 从 <code>1.1.0</code> 更新到 <code>1.1.1</code> 而改变摘要;migration-manifest Schema 因上述三处 description 更新而改变摘要;其余五个 Schema(project-manifest、profile-descriptor、managed-file-lock、operation-request、operation-result)摘要不变。<code>proof-independence.mjs</code> 的 P5 强制这套如实声明的 provenance 词汇(pin:<code>product-compatibility-fixture</code>;变异夹具:<code>product-fixture</code>);</li>
1840
1840
  <li><strong>Contracts 1.2.0(2026-08-09)</strong>:报告能力线增量,不是描述补丁:新增 <code>report-model</code>、<code>report-binding</code> 两个顶层契约和 SFC3001~SFC3003 报告错误码,改变了公开机器合同与审计事实。</li>
1841
1841
  <li><strong>Contracts 1.3.0(2026-08-09)</strong>:宿主接入能力线增量,不是描述补丁:新增 <code>host-descriptor</code>、<code>host-capability-fact</code>、<code>adapter-build-manifest</code>、<code>host-operation-plan</code>、<code>host-operation-receipt</code> 五个顶层契约,改变了公开机器合同与审计事实。</li>
1842
- <li><strong>Contracts 1.4.0(2026-08-09)</strong>:持久状态能力线增量,不是描述补丁:新增 <code>state-event-envelope</code>、<code>state-snapshot-metadata</code> 两个顶层契约,改变了公开机器合同与审计事实。<code>contracts-1.4.0.pin.json</code> 是当前现行基线;1.1.x 及更早 pin 保留为只读兼容存档。该 pin 的摘要与事实均从当前 <code>describeAuditSurface()/digestAuditSurface()</code> 机械投影,provenance 仍为 <code>product-compatibility-fixture</code>。</li>
1842
+ <li><strong>Contracts 1.4.0(2026-08-09)</strong>:持久状态能力线增量,不是描述补丁:新增 <code>state-event-envelope</code>、<code>state-snapshot-metadata</code> 两个顶层契约,改变了公开机器合同与审计事实。</li>
1843
+ <li><strong>Contracts 1.5.0(2026-08-16)</strong>:FND-ADR-010/011 能力线增量,不是描述补丁:新增 <code>declared-read-surface-result</code>、<code>structured-scan-policy</code> 两个顶层契约(顶层对象集合 20 → 22),改变了公开机器合同与审计事实。<code>contracts-1.5.0.pin.json</code> 是当前现行基线;1.4.0 及更早 pin 保留为只读兼容存档。该 pin 的摘要与事实均从当前 <code>describeAuditSurface()/digestAuditSurface()</code> 机械投影,provenance 仍为 <code>product-compatibility-fixture</code>。</li>
1843
1844
  <li>审计运行时先做包锁验证(见 isolation-and-lockfile.md),再做变异重放;pin 不匹配时,变异重放结果不得被采信。</li>
1844
1845
  </ul>
1845
1846
 
@@ -1792,17 +1792,17 @@
1792
1792
  <tbody>
1793
1793
  <tr>
1794
1794
  <td><code>skill-family-contracts</code></td>
1795
- <td>0.4.0</td>
1795
+ <td>0.5.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.4.0</td>
1800
+ <td>0.5.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.4.0</td>
1805
+ <td>0.5.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>