skill-family-engineering-kit 0.6.0 → 0.7.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.
Files changed (117) hide show
  1. package/CHANGELOG.md +21 -0
  2. package/CHANGELOG.zh-CN.md +21 -0
  3. package/CODE_OF_CONDUCT.md +131 -0
  4. package/CONTRIBUTING.md +25 -0
  5. package/README.md +18 -11
  6. package/README.zh-CN.md +18 -11
  7. package/SECURITY.md +33 -0
  8. package/docs/.nojekyll +0 -0
  9. package/docs/404.html +1666 -0
  10. package/docs/agents/architecture-routing/index.html +1944 -0
  11. package/docs/agents/capability-catalog.en.json +2047 -0
  12. package/docs/agents/capability-catalog.json +1239 -0
  13. package/docs/agents/capability-catalog.schema.json +179 -0
  14. package/docs/agents/capability-catalog.zh-CN.json +2047 -0
  15. package/docs/agents/index.html +1914 -0
  16. package/docs/architecture/index.html +2194 -0
  17. package/docs/assets/images/favicon.png +0 -0
  18. package/docs/assets/javascripts/bundle.d7400e89.min.js +16 -0
  19. package/docs/assets/javascripts/lunr/min/lunr.ar.min.js +1 -0
  20. package/docs/assets/javascripts/lunr/min/lunr.da.min.js +18 -0
  21. package/docs/assets/javascripts/lunr/min/lunr.de.min.js +18 -0
  22. package/docs/assets/javascripts/lunr/min/lunr.du.min.js +18 -0
  23. package/docs/assets/javascripts/lunr/min/lunr.el.min.js +1 -0
  24. package/docs/assets/javascripts/lunr/min/lunr.es.min.js +18 -0
  25. package/docs/assets/javascripts/lunr/min/lunr.fi.min.js +18 -0
  26. package/docs/assets/javascripts/lunr/min/lunr.fr.min.js +18 -0
  27. package/docs/assets/javascripts/lunr/min/lunr.he.min.js +1 -0
  28. package/docs/assets/javascripts/lunr/min/lunr.hi.min.js +1 -0
  29. package/docs/assets/javascripts/lunr/min/lunr.hu.min.js +18 -0
  30. package/docs/assets/javascripts/lunr/min/lunr.hy.min.js +1 -0
  31. package/docs/assets/javascripts/lunr/min/lunr.it.min.js +18 -0
  32. package/docs/assets/javascripts/lunr/min/lunr.ja.min.js +1 -0
  33. package/docs/assets/javascripts/lunr/min/lunr.jp.min.js +1 -0
  34. package/docs/assets/javascripts/lunr/min/lunr.kn.min.js +1 -0
  35. package/docs/assets/javascripts/lunr/min/lunr.ko.min.js +1 -0
  36. package/docs/assets/javascripts/lunr/min/lunr.multi.min.js +1 -0
  37. package/docs/assets/javascripts/lunr/min/lunr.nl.min.js +18 -0
  38. package/docs/assets/javascripts/lunr/min/lunr.no.min.js +18 -0
  39. package/docs/assets/javascripts/lunr/min/lunr.pt.min.js +18 -0
  40. package/docs/assets/javascripts/lunr/min/lunr.ro.min.js +18 -0
  41. package/docs/assets/javascripts/lunr/min/lunr.ru.min.js +18 -0
  42. package/docs/assets/javascripts/lunr/min/lunr.sa.min.js +1 -0
  43. package/docs/assets/javascripts/lunr/min/lunr.stemmer.support.min.js +1 -0
  44. package/docs/assets/javascripts/lunr/min/lunr.sv.min.js +18 -0
  45. package/docs/assets/javascripts/lunr/min/lunr.ta.min.js +1 -0
  46. package/docs/assets/javascripts/lunr/min/lunr.te.min.js +1 -0
  47. package/docs/assets/javascripts/lunr/min/lunr.th.min.js +1 -0
  48. package/docs/assets/javascripts/lunr/min/lunr.tr.min.js +18 -0
  49. package/docs/assets/javascripts/lunr/min/lunr.vi.min.js +1 -0
  50. package/docs/assets/javascripts/lunr/min/lunr.zh.min.js +1 -0
  51. package/docs/assets/javascripts/lunr/tinyseg.js +206 -0
  52. package/docs/assets/javascripts/lunr/wordcut.js +6708 -0
  53. package/docs/assets/javascripts/workers/search.2c215733.min.js +42 -0
  54. package/docs/assets/stylesheets/main.ec1eaa64.min.css +1 -0
  55. package/docs/assets/stylesheets/palette.ab4e12ef.min.css +1 -0
  56. package/docs/en/agents/architecture-routing/index.html +1944 -0
  57. package/docs/en/agents/index.html +1925 -0
  58. package/docs/en/architecture/index.html +2196 -0
  59. package/docs/en/examples-and-fixtures/index.html +1888 -0
  60. package/docs/en/help/index.html +2035 -0
  61. package/docs/en/index.html +1895 -0
  62. package/docs/en/licensing/index.html +1917 -0
  63. package/docs/en/migration/index.html +2280 -0
  64. package/docs/en/quickstart/index.html +1919 -0
  65. package/docs/en/recipes/adapter-text-closure/index.html +2000 -0
  66. package/docs/en/recipes/adopt-existing-repository/index.html +1987 -0
  67. package/docs/en/recipes/deterministic-human-report/index.html +1998 -0
  68. package/docs/en/recipes/domain-schema-validation/index.html +2009 -0
  69. package/docs/en/recipes/durable-local-state/index.html +2009 -0
  70. package/docs/en/recipes/host-profile-integration/index.html +2001 -0
  71. package/docs/en/recipes/index.html +1877 -0
  72. package/docs/en/recipes/safe-filesystem-and-atomic-write/index.html +1994 -0
  73. package/docs/en/reference/api/index.html +1941 -0
  74. package/docs/en/reference/compatibility/index.html +2036 -0
  75. package/docs/en/reference/failure-and-side-effect-matrix/index.html +2216 -0
  76. package/docs/examples-and-fixtures/index.html +1871 -0
  77. package/docs/git-lifecycle/index.html +2029 -0
  78. package/docs/help/index.html +2035 -0
  79. package/docs/index.html +1893 -0
  80. package/docs/integration/audit/baseline/audit-codes.json +62 -0
  81. package/docs/integration/audit/failure-evidence/index.html +1925 -0
  82. package/docs/integration/audit/independence/index.html +1894 -0
  83. package/docs/integration/audit/index.html +1881 -0
  84. package/docs/integration/audit/mutation-taxonomy/index.html +2075 -0
  85. package/docs/integration/audit/schemas/audit-evidence.schema.json +182 -0
  86. package/docs/integration/audit/version-compatibility/index.html +1965 -0
  87. package/docs/licensing/index.html +1917 -0
  88. package/docs/migration/index.html +2280 -0
  89. package/docs/public/status/index.html +1884 -0
  90. package/docs/quickstart/index.html +1919 -0
  91. package/docs/recipes/adapter-text-closure/index.html +2000 -0
  92. package/docs/recipes/adopt-existing-repository/index.html +1987 -0
  93. package/docs/recipes/deterministic-human-report/index.html +1998 -0
  94. package/docs/recipes/domain-schema-validation/index.html +2009 -0
  95. package/docs/recipes/durable-local-state/index.html +2009 -0
  96. package/docs/recipes/host-profile-integration/index.html +2001 -0
  97. package/docs/recipes/index.html +1877 -0
  98. package/docs/recipes/safe-filesystem-and-atomic-write/index.html +1994 -0
  99. package/docs/reference/api/contracts/index.html +2558 -0
  100. package/docs/reference/api/engineering-kit/index.html +2682 -0
  101. package/docs/reference/api/harness/index.html +3109 -0
  102. package/docs/reference/api/index.html +1881 -0
  103. package/docs/reference/compatibility/index.html +2036 -0
  104. package/docs/reference/failure-and-side-effect-matrix/index.html +2216 -0
  105. package/docs/search/search_index.json +1 -0
  106. package/docs/setup/index.html +1995 -0
  107. package/docs/sitemap.xml +207 -0
  108. package/package.json +6 -4
  109. package/profile-spi/extension-spi.json +162 -0
  110. package/profile-spi/index.mjs +574 -0
  111. package/profile-spi/profile-adoption.schema.json +120 -0
  112. package/profile-spi/profile-descriptor.schema.json +99 -0
  113. package/profile-spi/rule-baseline-catalog.json +50 -0
  114. package/release-notes/0.7.0.yaml +23 -0
  115. package/src/cli.mjs +0 -0
  116. package/src/index.mjs +2 -1
  117. package/src/projection.mjs +77 -33
package/CHANGELOG.md CHANGED
@@ -1,5 +1,26 @@
1
1
  # Changelog
2
2
 
3
+ <!-- release-skill:changelog:start version=0.7.0 locale=en baseline=sha256:ed1c59e7cee6e7280d2569e554b07d3b3513f4f3318bf30e374e2d480320f2b7 -->
4
+ ## [0.7.0] - 2026-08-21
5
+
6
+ This release exports the public canonical projection closure builder buildProjectionClosure (FG-4), so callers construct compileProjectionPlan-ready plan closures through one public entry instead of re-implementing the Kit-private ordering, serialization, and digest algorithms.
7
+
8
+ ### Added
9
+
10
+ - Adds the public skill-family-engineering-kit/profile-spi subpath. It projects the three Profile SPI JSON resources together with the Contracts canonical profile-descriptor.schema.json, and exports schema loaders, verifyProfile, adoption-pin verification, and tightening-only override checks. The data-only verifier fails closed on missing pins and symlink/path escapes and never executes Profile entrypoints.
11
+ - Adds buildProjectionClosure - a pure public builder accepting an array of {path, sha256, mode} members (an explicit type file is also accepted) and returning the canonical plan closure {digestAlgorithm sha256, digest, resourceCount, resources} that compileProjectionPlan accepts verbatim as previousOwnedClosure or externalCandidateClosure; an empty array yields the legal empty closure.
12
+ - The builder shares one normalization and digest source of truth with the compiler closure re-verification - deterministic path.localeCompare ordering, duplicate-path and portable-collision refusal, and the sha256(JSON.stringify(normalizedResources)) byte contract; every refusal fails closed in the existing projection plan input invalid domain (SFC2004 invalid-manifest).
13
+
14
+ ### Changed
15
+
16
+ - Keeps the compileProjectionPlan input contract unchanged and the four top-level commands (scaffold, adopt-plan, projection, check) unchanged; every 0.6.0 input still compiles to byte-identical plans. The package version moves in lockstep with the Foundation line while the contracts machine contract stays at 1.6.0.
17
+
18
+ ### Upgrade Notes
19
+
20
+ Version 0.7.0 is the projection closure builder line. Callers that previously assembled plan closures locally must import buildProjectionClosure and pin exactly 0.7.0. A plan closure ({path, type, sha256, mode} members) is not the harness computeResourceClosure resource closure ({path, role, exists, sha256} members) - the two shapes and purposes differ and are not interchangeable.
21
+ <!-- release-skill:changelog:end version=0.7.0 locale=en -->
22
+
23
+
3
24
  <!-- release-skill:changelog:start version=0.6.0 locale=en baseline=sha256:e84a44b51d513c123ce3c5e91c9e50374c6e899aa021adabe8e44c3ad86eb2b2 -->
4
25
  ## [0.6.0] - 2026-08-21
5
26
 
@@ -1,5 +1,26 @@
1
1
  # 变更日志
2
2
 
3
+ <!-- release-skill:changelog:start version=0.7.0 locale=zh-CN baseline=sha256:e6070267ab3db289caf998c4539055c3d39dfa16fb5bc7db44689b305fde2e81 -->
4
+ ## [0.7.0] - 2026-08-21
5
+
6
+ 本版导出公共规范投影闭包 builder buildProjectionClosure(FG-4),调用方经一个公共入口即可构造 compileProjectionPlan 可直接接受的计划闭包,不再复刻 Kit 私有的排序、序列化与摘要算法。
7
+
8
+ ### 新增
9
+
10
+ - 新增公共 skill-family-engineering-kit/profile-spi 子路径。它投影三个 Profile SPI JSON 资源与 Contracts canonical profile-descriptor.schema.json,导出 Schema 加载器、verifyProfile、采用 pin 校验和只收紧 overrides 检查。纯数据校验器遇到 pin 缺失、符号链接或路径越界时失败关闭,绝不执行 Profile entrypoint。
11
+ - 新增 buildProjectionClosure:纯函数公共 builder,接受 {path, sha256, mode} 成员数组(可接受显式 type file),返回规范计划闭包 {digestAlgorithm sha256, digest, resourceCount, resources},可原样作为 compileProjectionPlan 的 previousOwnedClosure 或 externalCandidateClosure;空数组返回合法的空闭包。
12
+ - builder 与编译器闭包复验共享同一规范化与摘要事实源:确定性 path.localeCompare 排序、重复路径与便携路径冲突拒绝、sha256(JSON.stringify(normalizedResources)) 字节合同;全部拒绝在既有 projection plan input invalid 领域内失败关闭(SFC2004 invalid-manifest)。
13
+
14
+ ### 变更
15
+
16
+ - compileProjectionPlan 入参合同不变,四个顶层命令(scaffold、adopt-plan、projection、check)不变;全部 0.6.0 既有输入仍编译为字节不变的计划。包版本随 Foundation 线锁步,Contracts 机器合同保持 1.6.0。
17
+
18
+ ### 升级说明
19
+
20
+ 0.7.0 是投影闭包 builder 线。此前在本地组装计划闭包的调用方必须导入 buildProjectionClosure 并精确锁定 0.7.0。计划闭包(成员 {path, type, sha256, mode})不是 harness computeResourceClosure 的资源闭包(成员 {path, role, exists, sha256})——两者形状与用途不同,不能互换。
21
+ <!-- release-skill:changelog:end version=0.7.0 locale=zh-CN -->
22
+
23
+
3
24
  <!-- release-skill:changelog:start version=0.6.0 locale=zh-CN baseline=sha256:e48a11bcbdffb317068cb751f914809360aa8f2e2b852b1e436696601f6a2a47 -->
4
25
  ## [0.6.0] - 2026-08-21
5
26
 
@@ -0,0 +1,131 @@
1
+ # 贡献者公约(Contributor Covenant Code of Conduct)
2
+
3
+ 本行为准则采用 Contributor Covenant 2.1 标准文本,来源明确:
4
+ `https://www.contributor-covenant.org/version/2/1/code_of_conduct/`。
5
+ 译文与解读以英文原文为准;执行联系方式见文末。
6
+
7
+ ## Our Pledge
8
+
9
+ We as members, contributors, and leaders pledge to make participation in our
10
+ community a harassment-free experience for everyone, regardless of age, body
11
+ size, visible or invisible disability, ethnicity, sex characteristics, gender
12
+ identity and expression, level of experience, education, socio-economic status,
13
+ nationality, personal appearance, race, religion, or sexual identity
14
+ and orientation.
15
+
16
+ We pledge to act and interact in ways that contribute to an open, welcoming,
17
+ diverse, inclusive, and healthy community.
18
+
19
+ ## Our Standards
20
+
21
+ Examples of behavior that contributes to a positive environment for our
22
+ community include:
23
+
24
+ * Demonstrating empathy and kindness toward other people
25
+ * Being respectful of differing opinions, viewpoints, and experiences
26
+ * Giving and gracefully accepting constructive feedback
27
+ * Accepting responsibility and apologizing to those affected by our mistakes,
28
+ and learning from the experience
29
+ * Focusing on what is best not just for us as individuals, but for the
30
+ overall community
31
+
32
+ Examples of unacceptable behavior include:
33
+
34
+ * The use of sexualized language or imagery, and sexual attention or
35
+ advances of any kind
36
+ * Trolling, insulting or derogatory comments, and personal or political attacks
37
+ * Public or private harassment
38
+ * Publishing others' private information, such as a physical or email
39
+ address, without their explicit permission
40
+ * Other conduct which could reasonably be considered inappropriate in a
41
+ professional setting
42
+
43
+ ## Enforcement Responsibilities
44
+
45
+ Community leaders are responsible for clarifying and enforcing our standards of
46
+ acceptable behavior and will take appropriate and fair corrective action in
47
+ response to any behavior that they deem inappropriate, threatening, offensive,
48
+ or harmful.
49
+
50
+ Community leaders have the right and responsibility to remove, edit, or reject
51
+ comments, commits, code, wiki edits, issues, and other contributions that are
52
+ not aligned to this Code of Conduct, and will communicate reasons for moderation
53
+ decisions when appropriate.
54
+
55
+ ## Scope
56
+
57
+ This Code of Conduct applies within all community spaces, and also applies when
58
+ an individual is officially representing the community in public spaces.
59
+ Examples of representing our community include using an official e-mail address,
60
+ posting via an official social media account, or acting as an appointed
61
+ representative at an online or offline event.
62
+
63
+ ## Enforcement
64
+
65
+ Instances of abusive, harassing, or otherwise unacceptable behavior may be
66
+ reported to the community leaders responsible for enforcement through the
67
+ source repository's private channels (see SECURITY.md for private reporting).
68
+ All complaints will be reviewed and investigated promptly and fairly.
69
+
70
+ All community leaders are obligated to respect the privacy and security of the
71
+ reporter of any incident.
72
+
73
+ ## Enforcement Guidelines
74
+
75
+ Community leaders will follow these Community Impact Guidelines in determining
76
+ the consequences for any action they deem in violation of this Code of Conduct:
77
+
78
+ ### 1. Correction
79
+
80
+ **Community Impact**: Use of inappropriate language or other behavior deemed
81
+ unprofessional or unwelcome in the community.
82
+
83
+ **Consequence**: A private, written warning from community leaders, providing
84
+ clarity around the nature of the violation and an explanation of why the
85
+ behavior was inappropriate. A public apology may be requested.
86
+
87
+ ### 2. Warning
88
+
89
+ **Community Impact**: A violation through a single incident or series
90
+ of actions.
91
+
92
+ **Consequence**: A warning with consequences for continued behavior. No
93
+ interaction with the people involved, including unsolicited interaction with
94
+ those enforcing the Code of Conduct, for a specified period of time. This
95
+ includes avoiding interactions in community spaces as well as external channels
96
+ like social media. Violating these terms may lead to a temporary or
97
+ permanent ban.
98
+
99
+ ### 3. Temporary Ban
100
+
101
+ **Community Impact**: A serious violation of community standards, including
102
+ sustained inappropriate behavior.
103
+
104
+ **Consequence**: A temporary ban from any sort of interaction or public
105
+ communication with the community for a specified period of time. No public or
106
+ private interaction with the people involved, including unsolicited interaction
107
+ with those enforcing the Code of Conduct, is allowed during this period.
108
+ Violating these terms may lead to a permanent ban.
109
+
110
+ ### 4. Permanent Ban
111
+
112
+ **Community Impact**: Demonstrating a pattern of violation of community
113
+ standards, including sustained inappropriate behavior, harassment of an
114
+ individual, or aggression toward or disparagement of classes of individuals.
115
+
116
+ **Consequence**: A permanent ban from any sort of public interaction within
117
+ the community.
118
+
119
+ ## Attribution
120
+
121
+ This Code of Conduct is adapted from the [Contributor Covenant][homepage],
122
+ version 2.1, available at
123
+ `https://www.contributor-covenant.org/version/2/1/code_of_conduct/`.
124
+
125
+ Community Impact Guidelines were inspired by Mozilla's code of conduct
126
+ enforcement ladder.
127
+
128
+ For answers to common questions about this code of conduct, see the FAQ at
129
+ `https://www.contributor-covenant.org/faq`.
130
+
131
+ [homepage]: https://www.contributor-covenant.org
@@ -0,0 +1,25 @@
1
+ # 贡献指南(skill-family-engineering-kit)
2
+
3
+ 本仓是 `skill-family-engineering-kit` 的公开发布镜像,只承载版本化发布物。开发在私有工作区进行,不在本仓公开。
4
+
5
+ ## 问题报告
6
+
7
+ Bug 报告请在本仓 GitHub Issues 提交:https://github.com/ifoohoo/skill-family-engineering-kit/issues
8
+
9
+ 提交时请尽量提供:受影响版本、最小复现步骤、预期与实际行为。
10
+
11
+ ## 代码贡献
12
+
13
+ 未经事先讨论的 Pull Request 不予接受。请先通过 Issue 讨论变更的动机与范围,获得维护者确认后再提交 PR。
14
+
15
+ ## 行为准则
16
+
17
+ 互动请遵守本仓 CODE_OF_CONDUCT.md。
18
+
19
+ ## 安全报告
20
+
21
+ 漏洞报告渠道见本仓 SECURITY.md。请走 Private vulnerability reporting,不要以公开 Issue 提交漏洞。
22
+
23
+ ## 许可证
24
+
25
+ 贡献内容默认按 Apache-2.0 授权,与本包许可证一致。
package/README.md CHANGED
@@ -4,29 +4,28 @@
4
4
 
5
5
  # skill-family-engineering-kit
6
6
 
7
- <!-- release-skill:release-version: 0.6.0 -->
7
+ <!-- release-skill:release-version: 0.7.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.6.0** (2026-08-21)
12
+ **0.7.0** (2026-08-21)
13
13
 
14
- This release extends the check command with the entry contract gate and the controlled relock transaction sub-actions, adds external frozen authority projection bindings (FG-3), and carries the nine-class check diagnostics (audit remediation C2).
14
+ This release exports the public canonical projection closure builder buildProjectionClosure (FG-4), so callers construct compileProjectionPlan-ready plan closures through one public entry instead of re-implementing the Kit-private ordering, serialization, and digest algorithms.
15
15
 
16
16
  **Added**
17
17
 
18
- - Adds the check entries sub-action - runEntryContractCheck and checkEntriesAction run the shared entry contract gate (SFA-ENTRY-003/004/005/007 and SFA-CONTEXT-001/002) over skill-family.entry-contract.json and SKILL.md bytes; diagnosis only, zero writes.
19
- - Adds the check relock sub-action - runRelock and relockAction are the one controlled exception to the no-write rule - a fail-closed transaction writing exactly the two contained state documents (.foundation/file-registry.json and skill-family.managed-file-lock.json), with drift validation before the first write and zero writes on any refusal.
20
- - Adds external frozen authority projection bindings (FG-3) - PROJECTION_AUTHORITY_BINDING_KINDS freezes external-root and caller-bytes; external-root re-reads each authority source from a separate frozen directory through the strict no-follow reader, and caller-bytes binds caller-provided base64 authority bytes to declared sha256 digests with no authority filesystem access at all, keeping the target root free of forged local authority facts.
18
+ - Adds the public skill-family-engineering-kit/profile-spi subpath. It projects the three Profile SPI JSON resources together with the Contracts canonical profile-descriptor.schema.json, and exports schema loaders, verifyProfile, adoption-pin verification, and tightening-only override checks. The data-only verifier fails closed on missing pins and symlink/path escapes and never executes Profile entrypoints.
19
+ - Adds buildProjectionClosure - a pure public builder accepting an array of {path, sha256, mode} members (an explicit type file is also accepted) and returning the canonical plan closure {digestAlgorithm sha256, digest, resourceCount, resources} that compileProjectionPlan accepts verbatim as previousOwnedClosure or externalCandidateClosure; an empty array yields the legal empty closure.
20
+ - The builder shares one normalization and digest source of truth with the compiler closure re-verification - deterministic path.localeCompare ordering, duplicate-path and portable-collision refusal, and the sha256(JSON.stringify(normalizedResources)) byte contract; every refusal fails closed in the existing projection plan input invalid domain (SFC2004 invalid-manifest).
21
21
 
22
22
  **Changed**
23
23
 
24
- - Extends check diagnostics to nine classes (adds version single-source consistency, public boundary validation, and platform subset declaration validation); COMMAND_SIDE_EFFECTS now documents the entries and relock sub-action semantics.
25
- - Keeps the four top-level commands (scaffold, adopt-plan, projection, check) unchanged; entries and relock are check sub-actions, not new commands.
24
+ - Keeps the compileProjectionPlan input contract unchanged and the four top-level commands (scaffold, adopt-plan, projection, check) unchanged; every 0.6.0 input still compiles to byte-identical plans. The package version moves in lockstep with the Foundation line while the contracts machine contract stays at 1.6.0.
26
25
 
27
26
  **Upgrade Notes**
28
27
 
29
- Version 0.6.0 is the Kit gate completion line. Projections whose authority does not live in the target root must declare an authorityBinding of kind external-root or caller-bytes and pin exactly 0.6.0.
28
+ Version 0.7.0 is the projection closure builder line. Callers that previously assembled plan closures locally must import buildProjectionClosure and pin exactly 0.7.0. A plan closure ({path, type, sha256, mode} members) is not the harness computeResourceClosure resource closure ({path, role, exists, sha256} members) - the two shapes and purposes differ and are not interchangeable.
30
29
  <!-- release-skill:managed:end id=latest-release -->
31
30
 
32
31
  | Command | Purpose | Side effects |
@@ -47,7 +46,7 @@ Kit is the "engineering stage" layer, depending on the Harness and Contracts. It
47
46
  ## Installation and Minimal Example
48
47
 
49
48
  ```sh
50
- npm install --save-dev skill-family-engineering-kit@0.6.0
49
+ npm install --save-dev skill-family-engineering-kit@0.7.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,15 @@ npm exec -- skill-family-kit projection --root <repo>
55
54
  npm exec -- skill-family-kit check --root <repo>
56
55
  ```
57
56
 
58
- 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.6.0 -- skill-family-kit --help`.
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.7.0 -- skill-family-kit --help`.
58
+
59
+ ### Public Profile SPI
60
+
61
+ The `skill-family-engineering-kit/profile-spi` subpath exposes the stable Profile SPI v2 data surface. It exports `verifyProfile`, `verifyAdoptionDigests`, `assessOverridesPolicy`, `loadSpiDefinition`, `loadExtendedDescriptorSchema`, and `loadRuleBaselineCatalog`.
62
+
63
+ The package carries three SPI JSON resources and the Contracts canonical `profile-descriptor.schema.json`. `profiles/spi` is the only handwritten source; projen mechanically projects those resources and the module into this subpath. The projection changes only the two public package imports and the local schema URL.
64
+
65
+ `verifyProfile({ profileRoot })` is read-only and data-only. It refuses descriptor errors, missing resources, executable entrypoints, symlink/path escapes, core reverse dependencies, unverified adoption pins, and non-tightening overrides with stable `SPE0000` / `SPE1001`–`SPE1007` result codes. It never executes Profile-provided files. The Profile's domain meaning remains owned by the caller.
59
66
 
60
67
  ### Report sub-action
61
68
 
package/README.zh-CN.md CHANGED
@@ -5,29 +5,28 @@
5
5
 
6
6
  # skill-family-engineering-kit
7
7
 
8
- <!-- release-skill:release-version: 0.6.0 -->
8
+ <!-- release-skill:release-version: 0.7.0 -->
9
9
 
10
10
  开发与 CI 阶段使用的工程工具包。**恰好四个**顶层命令,没有第五个:
11
11
 
12
12
  <!-- release-skill:managed:start id=latest-release -->
13
- **0.6.0** (2026-08-21)
13
+ **0.7.0** (2026-08-21)
14
14
 
15
- 本版为 check 命令新增入口契约门禁与受控 relock 事务子动作,新增外部冻结权威投影绑定(FG-3),并承载九类 check 诊断(审计整改 C2)。
15
+ 本版导出公共规范投影闭包 builder buildProjectionClosure(FG-4),调用方经一个公共入口即可构造 compileProjectionPlan 可直接接受的计划闭包,不再复刻 Kit 私有的排序、序列化与摘要算法。
16
16
 
17
17
  **新增**
18
18
 
19
- - 新增 check entries 子动作:runEntryContractCheck checkEntriesAction 运行共享入口契约门禁(SFA-ENTRY-003/004/005/007 SFA-CONTEXT-001/002),作用于 skill-family.entry-contract.json SKILL.md 字节;只诊断、零写入。
20
- - 新增 check relock 子动作:runRelock relockAction 是零写入规则的唯一受控例外——一次失败关闭事务,精确写入两个受收容状态文档(.foundation/file-registry.json skill-family.managed-file-lock.json),首次写入前做漂移校验,任何拒绝下零写入。
21
- - 新增外部冻结权威投影绑定(FG-3):PROJECTION_AUTHORITY_BINDING_KINDS 冻结 external-root caller-bytes;external-root 经严格不跟随读取器从独立的冻结目录重读每个权威源,caller-bytes 将调用方提供的 base64 权威字节绑定到声明的 sha256 摘要、完全不访问权威文件系统,使目标根内不存在伪造的本地权威事实。
19
+ - 新增公共 skill-family-engineering-kit/profile-spi 子路径。它投影三个 Profile SPI JSON 资源与 Contracts canonical profile-descriptor.schema.json,导出 Schema 加载器、verifyProfile、采用 pin 校验和只收紧 overrides 检查。纯数据校验器遇到 pin 缺失、符号链接或路径越界时失败关闭,绝不执行 Profile entrypoint。
20
+ - 新增 buildProjectionClosure:纯函数公共 builder,接受 {path, sha256, mode} 成员数组(可接受显式 type file),返回规范计划闭包 {digestAlgorithm sha256, digest, resourceCount, resources},可原样作为 compileProjectionPlan 的 previousOwnedClosure 或 externalCandidateClosure;空数组返回合法的空闭包。
21
+ - builder 与编译器闭包复验共享同一规范化与摘要事实源:确定性 path.localeCompare 排序、重复路径与便携路径冲突拒绝、sha256(JSON.stringify(normalizedResources)) 字节合同;全部拒绝在既有 projection plan input invalid 领域内失败关闭(SFC2004 invalid-manifest)。
22
22
 
23
23
  **变更**
24
24
 
25
- - check 诊断扩展为九类(新增版本单源一致性、公开边界校验、平台子集限制声明校验);COMMAND_SIDE_EFFECTS 现记录 entries relock 子动作语义。
26
- - 四个顶层命令(scaffold、adopt-plan、projection、check)保持不变;entries 与 relock 是 check 子动作,不是新命令。
25
+ - compileProjectionPlan 入参合同不变,四个顶层命令(scaffold、adopt-plan、projection、check)不变;全部 0.6.0 既有输入仍编译为字节不变的计划。包版本随 Foundation 线锁步,Contracts 机器合同保持 1.6.0。
27
26
 
28
27
  **升级说明**
29
28
 
30
- 0.6.0 Kit 门禁补齐线。权威不在目标根内的投影必须声明 kind external-root caller-bytes authorityBinding,并精确锁定 0.6.0。
29
+ 0.7.0 是投影闭包 builder 线。此前在本地组装计划闭包的调用方必须导入 buildProjectionClosure 并精确锁定 0.7.0。计划闭包(成员 {path, type, sha256, mode})不是 harness computeResourceClosure 的资源闭包(成员 {path, role, exists, sha256})——两者形状与用途不同,不能互换。
31
30
  <!-- release-skill:managed:end id=latest-release -->
32
31
 
33
32
  | 命令 | 用途 | 副作用 |
@@ -48,7 +47,7 @@ Kit 是「工程阶段」层,依赖 Harness 与 Contracts。它只做四件事
48
47
  ## 安装和最小示例
49
48
 
50
49
  ```sh
51
- npm install --save-dev skill-family-engineering-kit@0.6.0
50
+ npm install --save-dev skill-family-engineering-kit@0.7.0
52
51
  npm exec -- skill-family-kit --help
53
52
  npm exec -- skill-family-kit scaffold --root <empty-dir> --project-id my-project
54
53
  npm exec -- skill-family-kit adopt-plan --root <repo>
@@ -56,7 +55,15 @@ npm exec -- skill-family-kit projection --root <repo>
56
55
  npm exec -- skill-family-kit check --root <repo>
57
56
  ```
58
57
 
59
- 以上四条命令分别覆盖生成骨架、只读盘点、受管投影与诊断;零安装形式可用 `npm exec --package=skill-family-engineering-kit@0.6.0 -- skill-family-kit --help`。
58
+ 以上四条命令分别覆盖生成骨架、只读盘点、受管投影与诊断;零安装形式可用 `npm exec --package=skill-family-engineering-kit@0.7.0 -- skill-family-kit --help`。
59
+
60
+ ### 公共 Profile SPI
61
+
62
+ `skill-family-engineering-kit/profile-spi` 子路径提供稳定的 Profile SPI v2 数据表面,导出 `verifyProfile`、`verifyAdoptionDigests`、`assessOverridesPolicy`、`loadSpiDefinition`、`loadExtendedDescriptorSchema` 与 `loadRuleBaselineCatalog`。
63
+
64
+ 包内携带三个 SPI JSON 资源与 Contracts canonical `profile-descriptor.schema.json`。`profiles/spi` 是唯一手写真源;projen 将这些资源和模块机械投影到该子路径。投影只修改两个公共包导入和一个本地 Schema URL。
65
+
66
+ `verifyProfile({ profileRoot })` 只读处理纯数据。遇到 descriptor 错误、资源缺失、可执行 entrypoint、符号链接或路径越界、反向依赖公共核心、未验证的采用 pin、未收紧的 overrides 时,以稳定 `SPE0000` / `SPE1001`–`SPE1007` 结果码失败关闭;它不会执行 Profile 提供的文件。Profile 的领域含义仍由调用方负责。
60
67
 
61
68
  ### 报告子动作
62
69
 
package/SECURITY.md ADDED
@@ -0,0 +1,33 @@
1
+ # 安全策略(Security Policy)
2
+
3
+ ## 支持的版本
4
+
5
+ | 版本 | 安全支持状态 |
6
+ | --- | --- |
7
+ | 0.1.x | 当前维护线:接受安全报告 |
8
+ | 0.0.0 | 未发布的内部骨架版本,不在公开支持范围 |
9
+
10
+ 安全修复只承诺在最新的 0.1.x 线上提供;更早版本不回移修复。
11
+
12
+ ## 报告漏洞
13
+
14
+ 请勿通过公开 issue 直接披露未修复的安全漏洞。private workspace 仓永久
15
+ private,不是公开报告渠道;请通过任一 public 发布镜像仓(例如
16
+ `https://github.com/ifoohoo/skill-family-engineering-kit`)在 GitHub 上使用
17
+ **Private vulnerability reporting**(仓库 Security 页签的
18
+ "Report a vulnerability")私下报告。
19
+
20
+ 报告时请尽量提供:
21
+
22
+ - 受影响的包与版本(`skill-family-contracts`、`skill-family-harness-node`、
23
+ `skill-family-engineering-kit`);
24
+ - 可复现的最小步骤或概念验证;
25
+ - 影响范围与利用前提。
26
+
27
+ ## 处置承诺
28
+
29
+ - 收到报告后先确认受理,再按影响面排期修复;
30
+ - 修复发布前不公开披露细节;
31
+ - 修复随下一个补丁版本发布,并在该版本的变更记录中说明。
32
+
33
+ 本文件只描述漏洞报告渠道与支持版本;实时发布状态不属于本文件范围。
package/docs/.nojekyll ADDED
File without changes