skill-family-engineering-kit 0.22.0 → 0.24.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +40 -0
- package/CHANGELOG.zh-CN.md +40 -0
- package/README.md +62 -21
- package/README.zh-CN.md +62 -21
- package/data/capability-catalog/capability-catalog.en.json +21 -12
- package/data/capability-catalog/capability-catalog.json +8 -3
- package/data/capability-catalog/capability-catalog.zh-CN.json +21 -12
- package/docs/agents/capability-catalog.en.json +21 -12
- package/docs/agents/capability-catalog.json +8 -3
- package/docs/agents/capability-catalog.zh-CN.json +21 -12
- package/docs/architecture/index.html +3 -0
- package/docs/en/help/index.html +6 -0
- package/docs/en/quickstart/index.html +1 -0
- package/docs/help/index.html +6 -0
- package/docs/public/status/index.html +35 -6
- package/docs/quickstart/index.html +1 -0
- package/docs/reference/api/engineering-kit/index.html +68 -20
- package/docs/search/search_index.json +1 -1
- package/package.json +3 -3
- package/release-notes/0.23.0.yaml +23 -0
- package/release-notes/0.23.1.yaml +17 -0
- package/release-notes/0.24.0.yaml +23 -0
- package/src/adopt-plan.mjs +18 -5
- package/src/check.mjs +50 -10
- package/src/cli.mjs +111 -3
- package/src/core-check.mjs +61 -4
- package/src/index.mjs +7 -2
- package/src/professional-conclusion.mjs +278 -8
- package/src/projection.mjs +122 -6
- package/src/relock.mjs +22 -7
- package/src/scaffold.mjs +2 -1
- package/src/skeleton.mjs +27 -10
- package/src/version.mjs +1 -0
|
@@ -1184,11 +1184,13 @@
|
|
|
1184
1184
|
},
|
|
1185
1185
|
{
|
|
1186
1186
|
"id": "foundation.kit.check",
|
|
1187
|
-
"intent": "Diagnose only, do not fix: retain the nine legacy check classes and
|
|
1187
|
+
"intent": "Diagnose only, do not fix: retain the nine legacy check classes and the explicit declared version branch, and provide family proof reading plus exclusive projection of Skill review results; ENGINEERING_* remains a local declared result, and proof/proof-create are local unpublished entry points.",
|
|
1188
1188
|
"useWhen": [
|
|
1189
1189
|
"Need to surface engineering inconsistencies without auto-modifying",
|
|
1190
1190
|
"Need to narrow a legacy check via --only",
|
|
1191
|
-
"Need to compare declared text or JSON version sources and mirrors without scanning undeclared units"
|
|
1191
|
+
"Need to compare declared text or JSON version sources and mirrors without scanning undeclared units",
|
|
1192
|
+
"Need to read one family professional proof and receive pass, not_pass, or unavailable",
|
|
1193
|
+
"Need to project a Skill review JSON into an exclusive professional conclusion"
|
|
1192
1194
|
],
|
|
1193
1195
|
"doNotUseWhen": [
|
|
1194
1196
|
"Need auto-fix (forbidden; check writes no fixes)",
|
|
@@ -1197,18 +1199,22 @@
|
|
|
1197
1199
|
"prerequisites": [],
|
|
1198
1200
|
"inputs": [
|
|
1199
1201
|
"Legacy --only values: contracts|drift|closure|version|docs|git|identity|boundary|platform",
|
|
1200
|
-
"Declared version input: policy declared, only version, and project-manifest engineering.releaseUnits"
|
|
1202
|
+
"Declared version input: policy declared, only version, and project-manifest engineering.releaseUnits",
|
|
1203
|
+
"Proof-read input: --proof-root and a contained --proof",
|
|
1204
|
+
"proof-create input: --review-root, --review-input, and paired --conclusion-root plus --conclusion-output"
|
|
1201
1205
|
],
|
|
1202
1206
|
"outputs": [
|
|
1203
1207
|
"Findings list; exit code findings=1, mechanism=2",
|
|
1204
|
-
"Optional
|
|
1208
|
+
"Optional local ENGINEERING_* conclusion path from the runCommand check and checkEntriesAction wrappers when an explicit output root and relative path are provided",
|
|
1209
|
+
"Proof read returns status pass, not_pass, or unavailable, with exits 0, 1, and 2",
|
|
1210
|
+
"proof-create returns a FOUNDATION_STATIC_* conclusion path; CLEAR exits 0, FINDINGS and INCOMPLETE exit 1"
|
|
1205
1211
|
],
|
|
1206
1212
|
"sideEffects": [
|
|
1207
|
-
"runChecks
|
|
1208
|
-
"
|
|
1213
|
+
"runChecks and readProfessionalProof are read-only; the declared branch does not spawn, probe Git, or execute target content",
|
|
1214
|
+
"runCommand check, checkEntriesAction, and proof-create may exclusively create one conclusion under an explicitly supplied existing output root; they create no parent and overwrite nothing"
|
|
1209
1215
|
],
|
|
1210
1216
|
"failureSemantics": [
|
|
1211
|
-
"findings exit code 1; mechanism rejection exit code 2"
|
|
1217
|
+
"findings exit code 1; mechanism rejection, unreadable, or uninterpretable proofs exit code 2"
|
|
1212
1218
|
],
|
|
1213
1219
|
"invariants": [
|
|
1214
1220
|
"CHECK_CLASSES is a closed set of nine legacy classes, not expanded",
|
|
@@ -1455,10 +1461,11 @@
|
|
|
1455
1461
|
},
|
|
1456
1462
|
{
|
|
1457
1463
|
"id": "foundation.kit.relock",
|
|
1458
|
-
"intent": "Run the controlled relock transaction: register
|
|
1464
|
+
"intent": "Run the controlled relock transaction: register new handwritten files by default, or persistent tool-lock paths with explicit trackedToolLocks selection; update the registry and managed-file lock in the existing transaction without hashing tool-lock contents.",
|
|
1459
1465
|
"useWhen": [
|
|
1460
1466
|
"Need to admit a newly handwritten file into the closed world without hand-editing the registry",
|
|
1461
|
-
"Need to recompute the managed-file lock from current bytes after registration"
|
|
1467
|
+
"Need to recompute the managed-file lock from current bytes after registration",
|
|
1468
|
+
"Explicitly register provider-generated persistent lock paths in the existing trackedToolLocks category without locking their contents"
|
|
1462
1469
|
],
|
|
1463
1470
|
"doNotUseWhen": [
|
|
1464
1471
|
"Need to legitimize drifted managed bytes (relock refuses drift)",
|
|
@@ -1466,7 +1473,8 @@
|
|
|
1466
1473
|
],
|
|
1467
1474
|
"prerequisites": [],
|
|
1468
1475
|
"inputs": [
|
|
1469
|
-
"Project root carrying .foundation/file-registry.json and skill-family.managed-file-lock.json"
|
|
1476
|
+
"Project root carrying .foundation/file-registry.json and skill-family.managed-file-lock.json",
|
|
1477
|
+
"registrationClass defaults to handwritten and accepts only handwritten or trackedToolLocks; CLI: --registration-class. trackedToolLocks requires an explicit non-empty files array (CLI --files: comma-separated paths)"
|
|
1470
1478
|
],
|
|
1471
1479
|
"outputs": [
|
|
1472
1480
|
"Relock report (kind skill-family.relock-report)"
|
|
@@ -1475,12 +1483,13 @@
|
|
|
1475
1483
|
"Writes exactly two contained state documents: the registry and the managed-file lock"
|
|
1476
1484
|
],
|
|
1477
1485
|
"failureSemantics": [
|
|
1478
|
-
"
|
|
1486
|
+
"Pre-write parameter, path, registration and drift validation refusals leave the target unchanged",
|
|
1479
1487
|
"A half-updated state is never presented as success"
|
|
1480
1488
|
],
|
|
1481
1489
|
"invariants": [
|
|
1482
1490
|
"Adds no fifth top-level command; it runs as the check relock sub-action",
|
|
1483
|
-
"The new lock binds the new registry bytes before either document is committed"
|
|
1491
|
+
"The new lock binds the new registry bytes before either document is committed",
|
|
1492
|
+
"Initialize entries within the same transaction when trackedToolLocks is absent; reject an existing non-object category or non-array entries without replacing malformed fields"
|
|
1484
1493
|
],
|
|
1485
1494
|
"ownedByCaller": [
|
|
1486
1495
|
"Reconciliation of drifted managed bytes before relocking"
|
|
@@ -786,7 +786,10 @@
|
|
|
786
786
|
"runChecks (packages/skill-family-engineering-kit/src/check.mjs)",
|
|
787
787
|
"runCommand check wrapper (packages/skill-family-engineering-kit/src/index.mjs)",
|
|
788
788
|
"runCoreCheck (packages/skill-family-engineering-kit/src/core-check.mjs)",
|
|
789
|
-
"isContainedDeclaration (packages/skill-family-engineering-kit/src/core-check.mjs)"
|
|
789
|
+
"isContainedDeclaration (packages/skill-family-engineering-kit/src/core-check.mjs)",
|
|
790
|
+
"readProfessionalProof (packages/skill-family-engineering-kit/src/professional-conclusion.mjs)",
|
|
791
|
+
"createProfessionalProof (packages/skill-family-engineering-kit/src/professional-conclusion.mjs)",
|
|
792
|
+
"publishProfessionalConclusion (packages/skill-family-engineering-kit/src/professional-conclusion.mjs)"
|
|
790
793
|
],
|
|
791
794
|
"sourceRefs": [
|
|
792
795
|
"packages/skill-family-engineering-kit/src/check.mjs",
|
|
@@ -797,11 +800,13 @@
|
|
|
797
800
|
"positiveTestRefs": [
|
|
798
801
|
"packages/skill-family-engineering-kit/test/check.test.mjs",
|
|
799
802
|
"packages/skill-family-engineering-kit/test/core-check.test.mjs",
|
|
800
|
-
"packages/skill-family-engineering-kit/test/check-equivalence.test.mjs"
|
|
803
|
+
"packages/skill-family-engineering-kit/test/check-equivalence.test.mjs",
|
|
804
|
+
"packages/skill-family-engineering-kit/test/professional-conclusion.test.mjs"
|
|
801
805
|
],
|
|
802
806
|
"negativeTestRefs": [
|
|
803
807
|
"packages/skill-family-engineering-kit/test/check.test.mjs",
|
|
804
|
-
"packages/skill-family-engineering-kit/test/core-check.test.mjs"
|
|
808
|
+
"packages/skill-family-engineering-kit/test/core-check.test.mjs",
|
|
809
|
+
"packages/skill-family-engineering-kit/test/professional-conclusion.test.mjs"
|
|
805
810
|
]
|
|
806
811
|
},
|
|
807
812
|
{
|
|
@@ -1183,11 +1183,13 @@
|
|
|
1183
1183
|
},
|
|
1184
1184
|
{
|
|
1185
1185
|
"id": "foundation.kit.check",
|
|
1186
|
-
"intent": "只诊断不修复:保留九类 legacy
|
|
1186
|
+
"intent": "只诊断不修复:保留九类 legacy 检查和显式 declared 版本分支,并提供本族证明读取与 Skill 审阅结果的排他投影;ENGINEERING_* 仍是局部声明结果,proof/proof-create 是本地未发布入口",
|
|
1187
1187
|
"useWhen": [
|
|
1188
1188
|
"需要发现工程不一致但不自动修改",
|
|
1189
1189
|
"需要按 --only 缩小 legacy 检查范围",
|
|
1190
|
-
"需要比较声明的文本或 JSON 版本来源与镜像,不扫描未声明单元"
|
|
1190
|
+
"需要比较声明的文本或 JSON 版本来源与镜像,不扫描未声明单元",
|
|
1191
|
+
"需要读取一份本族专业证明并得到 pass、not_pass 或 unavailable",
|
|
1192
|
+
"需要把 Skill 审阅 JSON 投影成排他专业结论"
|
|
1191
1193
|
],
|
|
1192
1194
|
"doNotUseWhen": [
|
|
1193
1195
|
"需要自动修复(禁止,check 不写修复)",
|
|
@@ -1196,18 +1198,22 @@
|
|
|
1196
1198
|
"prerequisites": [],
|
|
1197
1199
|
"inputs": [
|
|
1198
1200
|
"legacy --only 取值:contracts|drift|closure|version|docs|git|identity|boundary|platform",
|
|
1199
|
-
"declared 版本输入:policy declared、only version 与项目清单 engineering.releaseUnits"
|
|
1201
|
+
"declared 版本输入:policy declared、only version 与项目清单 engineering.releaseUnits",
|
|
1202
|
+
"proof 读取输入:--proof-root 与根内 --proof",
|
|
1203
|
+
"proof-create 输入:--review-root、--review-input,以及成对的 --conclusion-root 与 --conclusion-output"
|
|
1200
1204
|
],
|
|
1201
1205
|
"outputs": [
|
|
1202
1206
|
"发现清单;退出码 findings=1、mechanism=2",
|
|
1203
|
-
"runCommand check
|
|
1207
|
+
"runCommand check 与 checkEntriesAction 包装入口在显式提供输出根与相对路径时返回可选局部 ENGINEERING_* 结论路径",
|
|
1208
|
+
"proof 读取返回 status 为 pass、not_pass 或 unavailable,对应退出 0、1、2",
|
|
1209
|
+
"proof-create 返回 FOUNDATION_STATIC_* 结论路径;CLEAR 退出 0,FINDINGS 与 INCOMPLETE 退出 1"
|
|
1204
1210
|
],
|
|
1205
1211
|
"sideEffects": [
|
|
1206
|
-
"runChecks 只读;declared 分支不启动进程、不探测 Git、不执行目标内容",
|
|
1207
|
-
"
|
|
1212
|
+
"runChecks 与 readProfessionalProof 只读;declared 分支不启动进程、不探测 Git、不执行目标内容",
|
|
1213
|
+
"runCommand check、checkEntriesAction 与 proof-create 可在显式提供的既有输出根内独占创建一份结论;不建父目录、不覆盖"
|
|
1208
1214
|
],
|
|
1209
1215
|
"failureSemantics": [
|
|
1210
|
-
"findings 退出码 1;mechanism
|
|
1216
|
+
"findings 退出码 1;mechanism 拒绝、读不到或无法解释的证明退出码 2"
|
|
1211
1217
|
],
|
|
1212
1218
|
"invariants": [
|
|
1213
1219
|
"CHECK_CLASSES 仍为九类 legacy 闭集,不扩张",
|
|
@@ -1454,10 +1460,11 @@
|
|
|
1454
1460
|
},
|
|
1455
1461
|
{
|
|
1456
1462
|
"id": "foundation.kit.relock",
|
|
1457
|
-
"intent": "运行受控 relock
|
|
1463
|
+
"intent": "运行受控 relock 事务:默认登记新增手写文件;显式选择 trackedToolLocks 时登记持久工具锁路径,并在原事务中同步 registry 与受管文件锁。工具锁内容不纳入受管摘要。",
|
|
1458
1464
|
"useWhen": [
|
|
1459
1465
|
"需要把新手写文件纳入闭域而不手改 registry",
|
|
1460
|
-
"需要在登记后以当前字节重算受管文件锁"
|
|
1466
|
+
"需要在登记后以当前字节重算受管文件锁",
|
|
1467
|
+
"需要将原工具生成的持久锁显式登记到既有 trackedToolLocks 类别,且不锁定其内容"
|
|
1461
1468
|
],
|
|
1462
1469
|
"doNotUseWhen": [
|
|
1463
1470
|
"需要合法化已漂移的受管字节(relock 拒绝漂移)",
|
|
@@ -1465,7 +1472,8 @@
|
|
|
1465
1472
|
],
|
|
1466
1473
|
"prerequisites": [],
|
|
1467
1474
|
"inputs": [
|
|
1468
|
-
"携带 .foundation/file-registry.json 与 skill-family.managed-file-lock.json 的项目根"
|
|
1475
|
+
"携带 .foundation/file-registry.json 与 skill-family.managed-file-lock.json 的项目根",
|
|
1476
|
+
"registrationClass 默认为 handwritten;仅可选 handwritten 或 trackedToolLocks,CLI 对应 --registration-class。trackedToolLocks 必须传非空 files 显式清单(CLI --files 为逗号分隔路径)"
|
|
1469
1477
|
],
|
|
1470
1478
|
"outputs": [
|
|
1471
1479
|
"relock 报告(kind skill-family.relock-report)"
|
|
@@ -1474,12 +1482,13 @@
|
|
|
1474
1482
|
"只写两个受收容状态文档:registry 与受管文件锁"
|
|
1475
1483
|
],
|
|
1476
1484
|
"failureSemantics": [
|
|
1477
|
-
"
|
|
1485
|
+
"写入前的参数、路径、登记与漂移检查拒绝时零写入",
|
|
1478
1486
|
"半更新状态绝不呈现为成功"
|
|
1479
1487
|
],
|
|
1480
1488
|
"invariants": [
|
|
1481
1489
|
"不新增第五个顶层命令,落在 check relock 子动作",
|
|
1482
|
-
"新锁先绑定新 registry 字节,再提交任一文档"
|
|
1490
|
+
"新锁先绑定新 registry 字节,再提交任一文档",
|
|
1491
|
+
"trackedToolLocks 缺省时在同一事务初始化 entries 数组;已有类别不是对象或 entries 不是数组时拒绝,不替换异常字段"
|
|
1483
1492
|
],
|
|
1484
1493
|
"ownedByCaller": [
|
|
1485
1494
|
"relock 前对已漂移受管字节的对账"
|
|
@@ -2155,6 +2155,9 @@ operation。后续晋升 stable 只提高兼容承诺,不再触发消费者源
|
|
|
2155
2155
|
版本来源及镜像;入口分支只静态读取声明的普通文件,均不运行目标脚本、Skill、hook 或模型。
|
|
2156
2156
|
纯读取 API 与缺省命令不写文件。只有 <code>runCommand("check")</code> 与 <code>checkEntriesAction</code> 在调用方同时
|
|
2157
2157
|
给出已存在输出根和根内相对路径时,才独占创建一份公共结论;不自动建目录,也不覆盖现有文件。</p>
|
|
2158
|
+
<p>本地 0.24.0 候选对公开 <code>runCoreCheck</code> 作一项窄行为修复:目标真实声明 <code>engineering.releaseUnits</code> 时,版本类复用已有声明式版本读取逻辑,依据 <code>versionSource</code> 与 <code>versionMirrors</code> 检查文本或 JSON 格式的版本信息;私有工程的 <code>package.json</code> 不自动成为该业务单元的版本源或镜像,仅当被显式声明时方可参与版本认定。对于真正未声明版本、或仅包含合法 <code>entries</code> 的目标,仍沿用原有 legacy 版本检查路径。非法或重复的声明不回退为通过;声明的版本源或镜像缺失、不可读时如实失败。</p>
|
|
2159
|
+
<p>核心调度机制保持不变,共用原九类循环与报告流程,保留 Contracts 规格版本一致性检查及其他八类校验。声明的来源、镜像及各祖先路径均需先通过原树枚举与 <code>lstat</code> 安全预检,包括原不展开的工具目录;仅探查声明所涉路径,不引入新的目录遍历器。符号链接、FIFO 及其他不安全读集仍按原规则拒绝访问,禁止穿过根内符号链接目录;<code>completed</code>、<code>mechanism</code> 与 0/1/2 退出码如实传播。</p>
|
|
2160
|
+
<p>本次变更仅限于公开 core 在已声明版本目标上的适用性调整:公共 <code>runChecks</code> 缺省行为仍等同于显式 <code>policy: "legacy"</code>,涵盖原版本发现及 <code>full</code>/<code>only</code> 等价逻辑;显式 <code>policy: "declared"</code> 仍仅允许 <code>only: "version"</code>,维持原报告形式、不执行目标代码、不调用 Git 的边界。未新增任何公共 policy 值、API、CLI 参数、Schema 定义或包根导出,亦不在目标生成 shim 中复制检查逻辑。候选实现与局部验证不构成正式发布、业务资格或整体初始化完成的证明。</p>
|
|
2158
2161
|
<p>这组源码不是已发布 <code>0.21.0</code> 的组成部分。已发布 <code>0.21.0</code> 仍对应 Contracts <code>1.18.0</code> 与 46 类
|
|
2159
2162
|
对象;新协议的发布、跨方正式采用,以及跨操作类别的权限交集均不在本地实现完成结论内。</p>
|
|
2160
2163
|
<h2 id="下一阶段能力线架构-hand-off">下一阶段能力线(架构 hand-off)<a class="headerlink" href="#下一阶段能力线架构-hand-off" title="Permanent link">¶</a></h2>
|
package/docs/en/help/index.html
CHANGED
|
@@ -1865,6 +1865,11 @@
|
|
|
1865
1865
|
<td>The single natural-language adoption-diagnosis Skill. It reads caller-provided exact-version facts, capability-catalog query results, and <code>adopt-plan</code> results, then reports a full match, partial match, candidate match, no match, or a missed existing capability</td>
|
|
1866
1866
|
</tr>
|
|
1867
1867
|
<tr>
|
|
1868
|
+
<td>Run a complete static engineering review or read an existing Foundation proof</td>
|
|
1869
|
+
<td><code>foundation-engineering-check</code></td>
|
|
1870
|
+
<td>The static engineering-review Skill in the same Plugin. It reviews selected engineering declarations, public capability adoption, and call boundaries, then projects a shared conclusion with <code>check proof-create</code>. Read an old proof with <code>check proof</code>. Passing the two mechanical version and entry branches is not a full-family pass</td>
|
|
1871
|
+
</tr>
|
|
1872
|
+
<tr>
|
|
1868
1873
|
<td>Inventory an existing project and compare it with the reference skeleton</td>
|
|
1869
1874
|
<td><code>planAdoption({ root, allowGitSpawn: false })</code> or <code>adopt-plan --no-git-spawn</code></td>
|
|
1870
1875
|
<td>Read-only output covering the write set, conflicts, risks, and migration completion conditions. The reference skeleton is not a mandatory directory standard for every project</td>
|
|
@@ -2047,6 +2052,7 @@
|
|
|
2047
2052
|
<h2 id="Project-Routing">Project Routing<a class="headerlink" href="#Project-Routing" title="Permanent link">¶</a></h2>
|
|
2048
2053
|
<ul>
|
|
2049
2054
|
<li>Published-capability fit / duplicate proposed mechanism → <code>foundation-adoption-review</code>.</li>
|
|
2055
|
+
<li>Complete static engineering review / read an existing Foundation proof → <code>foundation-engineering-check</code>.</li>
|
|
2050
2056
|
<li>Publishing remote state / npm publish → release-skill.</li>
|
|
2051
2057
|
<li>Tasks / retries / rework / acceptance → loop-agent.</li>
|
|
2052
2058
|
<li>Artifact relationships / version-lock → artifact-graph.</li>
|
|
@@ -1896,6 +1896,7 @@
|
|
|
1896
1896
|
<p>Choose the entry point before running a command:</p>
|
|
1897
1897
|
<ul>
|
|
1898
1898
|
<li>If the input is a natural-language requirement and it is unclear whether Foundation already covers it, call the single <code>foundation-adoption-review</code> Skill. Supply an explicit exact Foundation version, a same-version capability-catalog query result, and an <code>adopt-plan</code> result. The Skill diagnoses read-only; it does not install, initialize, run <code>check</code>, or probe qualification.</li>
|
|
1899
|
+
<li>If the target root needs a complete static engineering review, or an existing Foundation proof must be read, call <code>foundation-engineering-check</code>. It reviews selected engineering declarations, public capability adoption, and call boundaries, then projects a shared conclusion with <code>check proof-create</code>. Read an old proof with <code>check proof</code>. Passing the two mechanical version and entry branches is not a full Foundation pass.</li>
|
|
1899
1900
|
<li>If the capability ID is known and the target is an empty directory, use <code>scaffold</code>.</li>
|
|
1900
1901
|
<li>If an existing project needs an inventory of structure, conflicts, and migration conditions, start with read-only <code>adopt-plan</code>. Decide later whether to authorize <code>projection</code> or let the project modify existing files itself.</li>
|
|
1901
1902
|
<li>If declarations must be compared with physical files, use <code>check</code>. It performs static governance checks without running target Skills, business scripts, or hooks.</li>
|
package/docs/help/index.html
CHANGED
|
@@ -1865,6 +1865,11 @@
|
|
|
1865
1865
|
<td>唯一的自然语言采用诊断 Skill。它读取调用方提供的精确版本、能力目录查询结果和 <code>adopt-plan</code> 结果,给出完整匹配、部分匹配、候选匹配、无匹配或漏看已有能力</td>
|
|
1866
1866
|
</tr>
|
|
1867
1867
|
<tr>
|
|
1868
|
+
<td>需要对目标做完整静态工程审阅或读取已有 Foundation 证明</td>
|
|
1869
|
+
<td><code>foundation-engineering-check</code></td>
|
|
1870
|
+
<td>同一 Plugin 内的静态工程审阅 Skill。它按所选范围审阅工程声明、公共能力采用和调用边界,再用 <code>check proof-create</code> 投影共同结论;读取旧证明用 <code>check proof</code>。版本与入口两个机械分支通过不等于全族通过</td>
|
|
1871
|
+
</tr>
|
|
1872
|
+
<tr>
|
|
1868
1873
|
<td>需要盘点存量项目与参考骨架的结构差异</td>
|
|
1869
1874
|
<td><code>planAdoption({ root, allowGitSpawn: false })</code> 或 <code>adopt-plan --no-git-spawn</code></td>
|
|
1870
1875
|
<td>只读输出写集、冲突、风险和迁移完成条件;参考骨架不是所有项目必须复制的目录规范</td>
|
|
@@ -2047,6 +2052,7 @@
|
|
|
2047
2052
|
<h2 id="项目路由">项目路由<a class="headerlink" href="#项目路由" title="Permanent link">¶</a></h2>
|
|
2048
2053
|
<ul>
|
|
2049
2054
|
<li>精确版本中的能力是否适用 / 现有方案是否重复 → <code>foundation-adoption-review</code>。</li>
|
|
2055
|
+
<li>完整静态工程审阅 / 读取已有 Foundation 证明 → <code>foundation-engineering-check</code>。</li>
|
|
2050
2056
|
<li>发布远端状态 / npm 发布 → release-skill。</li>
|
|
2051
2057
|
<li>任务 / 重试 / 返工 / 验收 → loop-agent。</li>
|
|
2052
2058
|
<li>制品关系 / 版本锁 → artifact-graph。</li>
|
|
@@ -460,6 +460,17 @@
|
|
|
460
460
|
</span>
|
|
461
461
|
</a>
|
|
462
462
|
|
|
463
|
+
</li>
|
|
464
|
+
|
|
465
|
+
<li class="md-nav__item">
|
|
466
|
+
<a href="#独立-Plugin" class="md-nav__link">
|
|
467
|
+
<span class="md-ellipsis">
|
|
468
|
+
|
|
469
|
+
独立 Plugin
|
|
470
|
+
|
|
471
|
+
</span>
|
|
472
|
+
</a>
|
|
473
|
+
|
|
463
474
|
</li>
|
|
464
475
|
|
|
465
476
|
<li class="md-nav__item">
|
|
@@ -1726,6 +1737,17 @@
|
|
|
1726
1737
|
</span>
|
|
1727
1738
|
</a>
|
|
1728
1739
|
|
|
1740
|
+
</li>
|
|
1741
|
+
|
|
1742
|
+
<li class="md-nav__item">
|
|
1743
|
+
<a href="#独立-Plugin" class="md-nav__link">
|
|
1744
|
+
<span class="md-ellipsis">
|
|
1745
|
+
|
|
1746
|
+
独立 Plugin
|
|
1747
|
+
|
|
1748
|
+
</span>
|
|
1749
|
+
</a>
|
|
1750
|
+
|
|
1729
1751
|
</li>
|
|
1730
1752
|
|
|
1731
1753
|
<li class="md-nav__item">
|
|
@@ -1779,7 +1801,7 @@
|
|
|
1779
1801
|
|
|
1780
1802
|
|
|
1781
1803
|
<h1 id="Skill-Family-Foundation--公开状态">Skill Family Foundation — 公开状态<a class="headerlink" href="#Skill-Family-Foundation--公开状态" title="Permanent link">¶</a></h1>
|
|
1782
|
-
<p
|
|
1804
|
+
<p>本页列出本静态发布快照的目标坐标和验证入口,并说明各项能力入口。版本从各发布单元的 package.json 派生,由 <code>node scripts/render-public-status.mjs --check</code> 零写入重算并逐字节校验;候选坐标不证明远端发布或完整初始化已经通过。</p>
|
|
1783
1805
|
<h2 id="包">包<a class="headerlink" href="#包" title="Permanent link">¶</a></h2>
|
|
1784
1806
|
<table>
|
|
1785
1807
|
<thead>
|
|
@@ -1792,21 +1814,28 @@
|
|
|
1792
1814
|
<tbody>
|
|
1793
1815
|
<tr>
|
|
1794
1816
|
<td><code>skill-family-contracts</code></td>
|
|
1795
|
-
<td>0.
|
|
1817
|
+
<td>0.24.0</td>
|
|
1796
1818
|
<td><a href="https://github.com/ifoohoo/skill-family-contracts">ifoohoo/skill-family-contracts</a></td>
|
|
1797
1819
|
</tr>
|
|
1798
1820
|
<tr>
|
|
1799
1821
|
<td><code>skill-family-harness-node</code></td>
|
|
1800
|
-
<td>0.
|
|
1822
|
+
<td>0.24.0</td>
|
|
1801
1823
|
<td><a href="https://github.com/ifoohoo/skill-family-harness-node">ifoohoo/skill-family-harness-node</a></td>
|
|
1802
1824
|
</tr>
|
|
1803
1825
|
<tr>
|
|
1804
1826
|
<td><code>skill-family-engineering-kit</code></td>
|
|
1805
|
-
<td>0.
|
|
1827
|
+
<td>0.24.0</td>
|
|
1806
1828
|
<td><a href="https://github.com/ifoohoo/skill-family-engineering-kit">ifoohoo/skill-family-engineering-kit</a></td>
|
|
1807
1829
|
</tr>
|
|
1808
1830
|
</tbody>
|
|
1809
1831
|
</table>
|
|
1832
|
+
<h2 id="独立-Plugin">独立 Plugin<a class="headerlink" href="#独立-Plugin" title="Permanent link">¶</a></h2>
|
|
1833
|
+
<ul>
|
|
1834
|
+
<li><code>foundation-adoption-review</code>:0.24.0,公开镜像 <a href="https://github.com/ifoohoo/foundation-adoption-review">ifoohoo/foundation-adoption-review</a></li>
|
|
1835
|
+
<li><code>foundation-adoption-review</code>:只读采用诊断</li>
|
|
1836
|
+
<li><code>foundation-engineering-check</code>:只读静态工程审阅与证明读取</li>
|
|
1837
|
+
<li><code>foundation-initialize</code>:在明确授权下初始化目标工程,保留业务和人工判断</li>
|
|
1838
|
+
</ul>
|
|
1810
1839
|
<h2 id="文档">文档<a class="headerlink" href="#文档" title="Permanent link">¶</a></h2>
|
|
1811
1840
|
<ul>
|
|
1812
1841
|
<li><a href="https://ifoohoo.github.io/skill-family-engineering-kit/">公开文档站</a></li>
|
|
@@ -1821,9 +1850,9 @@
|
|
|
1821
1850
|
<h2 id="说明">说明<a class="headerlink" href="#说明" title="Permanent link">¶</a></h2>
|
|
1822
1851
|
<ul>
|
|
1823
1852
|
<li>本页不宣称任何版本已在远端发布;发布动作是否已执行由发布后的远端验证报告证明。</li>
|
|
1824
|
-
<li
|
|
1853
|
+
<li>三个机制包是独立的 npm 发布目标;Plugin 使用自己的公开镜像,不进入三包依赖链,也不新增机制包。</li>
|
|
1825
1854
|
<li>许可证:Apache-2.0</li>
|
|
1826
|
-
<li
|
|
1855
|
+
<li>私有工作区仓不对外可见;公开发布物经三个机制包的公开镜像与 npm tarball,以及独立 Plugin 的公开镜像分发。</li>
|
|
1827
1856
|
</ul>
|
|
1828
1857
|
|
|
1829
1858
|
|
|
@@ -1896,6 +1896,7 @@
|
|
|
1896
1896
|
<p>先判断需要哪种入口:</p>
|
|
1897
1897
|
<ul>
|
|
1898
1898
|
<li>只有一段自然语言需求,还不确定 Foundation 是否已经覆盖时,调用唯一的 <code>foundation-adoption-review</code> Skill。向它提供明确的 Foundation 精确版本、同版本能力目录查询结果和 <code>adopt-plan</code> 结果;它只读分析,不安装、不初始化、不运行 <code>check</code> 或资格探测。</li>
|
|
1899
|
+
<li>需要对目标根做完整静态工程审阅,或读取已有 Foundation 证明时,调用 <code>foundation-engineering-check</code>。它按所选范围审阅工程声明、公共能力采用和调用边界,再用 <code>check proof-create</code> 投影共同结论;读取旧证明用 <code>check proof</code>。版本与入口两个机械分支通过不等于完整 Foundation 通过。</li>
|
|
1899
1900
|
<li>已经知道能力 ID,准备初始化空目录时,使用 <code>scaffold</code>。</li>
|
|
1900
1901
|
<li>已有项目需要盘点结构、冲突和迁移条件时,先使用只读 <code>adopt-plan</code>。得到计划后再决定是否授权 <code>projection</code> 或由项目自己修改存量文件。</li>
|
|
1901
1902
|
<li>已有声明需要与物理文件核对时,使用 <code>check</code>。它执行静态治理检查,不运行目标 Skill、业务脚本或 hooks。</li>
|
|
@@ -829,14 +829,31 @@
|
|
|
829
829
|
<ul class="md-nav__list">
|
|
830
830
|
|
|
831
831
|
<li class="md-nav__item">
|
|
832
|
-
<a href="#runChecks--runCoreCheck--runEntryContractCheck--checkEntriesAction--isContainedDeclaration" class="md-nav__link">
|
|
832
|
+
<a href="#runChecks--runCoreCheck--runEntryContractCheck--checkEntriesAction--isContainedDeclaration--readProfessionalProof--createProfessionalProof--publishProfessionalConclusion" class="md-nav__link">
|
|
833
833
|
<span class="md-ellipsis">
|
|
834
834
|
|
|
835
|
-
runChecks / runCoreCheck / runEntryContractCheck / checkEntriesAction / isContainedDeclaration
|
|
835
|
+
runChecks / runCoreCheck / runEntryContractCheck / checkEntriesAction / isContainedDeclaration / readProfessionalProof / createProfessionalProof / publishProfessionalConclusion
|
|
836
836
|
|
|
837
837
|
</span>
|
|
838
838
|
</a>
|
|
839
839
|
|
|
840
|
+
<nav class="md-nav" aria-label="runChecks / runCoreCheck / runEntryContractCheck / checkEntriesAction / isContainedDeclaration / readProfessionalProof / createProfessionalProof / publishProfessionalConclusion">
|
|
841
|
+
<ul class="md-nav__list">
|
|
842
|
+
|
|
843
|
+
<li class="md-nav__item">
|
|
844
|
+
<a href="#本地-0240-候选的-core-版本接线" class="md-nav__link">
|
|
845
|
+
<span class="md-ellipsis">
|
|
846
|
+
|
|
847
|
+
本地 0.24.0 候选的 core 版本接线
|
|
848
|
+
|
|
849
|
+
</span>
|
|
850
|
+
</a>
|
|
851
|
+
|
|
852
|
+
</li>
|
|
853
|
+
|
|
854
|
+
</ul>
|
|
855
|
+
</nav>
|
|
856
|
+
|
|
840
857
|
</li>
|
|
841
858
|
|
|
842
859
|
</ul>
|
|
@@ -2200,14 +2217,31 @@
|
|
|
2200
2217
|
<ul class="md-nav__list">
|
|
2201
2218
|
|
|
2202
2219
|
<li class="md-nav__item">
|
|
2203
|
-
<a href="#runChecks--runCoreCheck--runEntryContractCheck--checkEntriesAction--isContainedDeclaration" class="md-nav__link">
|
|
2220
|
+
<a href="#runChecks--runCoreCheck--runEntryContractCheck--checkEntriesAction--isContainedDeclaration--readProfessionalProof--createProfessionalProof--publishProfessionalConclusion" class="md-nav__link">
|
|
2204
2221
|
<span class="md-ellipsis">
|
|
2205
2222
|
|
|
2206
|
-
runChecks / runCoreCheck / runEntryContractCheck / checkEntriesAction / isContainedDeclaration
|
|
2223
|
+
runChecks / runCoreCheck / runEntryContractCheck / checkEntriesAction / isContainedDeclaration / readProfessionalProof / createProfessionalProof / publishProfessionalConclusion
|
|
2207
2224
|
|
|
2208
2225
|
</span>
|
|
2209
2226
|
</a>
|
|
2210
2227
|
|
|
2228
|
+
<nav class="md-nav" aria-label="runChecks / runCoreCheck / runEntryContractCheck / checkEntriesAction / isContainedDeclaration / readProfessionalProof / createProfessionalProof / publishProfessionalConclusion">
|
|
2229
|
+
<ul class="md-nav__list">
|
|
2230
|
+
|
|
2231
|
+
<li class="md-nav__item">
|
|
2232
|
+
<a href="#本地-0240-候选的-core-版本接线" class="md-nav__link">
|
|
2233
|
+
<span class="md-ellipsis">
|
|
2234
|
+
|
|
2235
|
+
本地 0.24.0 候选的 core 版本接线
|
|
2236
|
+
|
|
2237
|
+
</span>
|
|
2238
|
+
</a>
|
|
2239
|
+
|
|
2240
|
+
</li>
|
|
2241
|
+
|
|
2242
|
+
</ul>
|
|
2243
|
+
</nav>
|
|
2244
|
+
|
|
2211
2245
|
</li>
|
|
2212
2246
|
|
|
2213
2247
|
</ul>
|
|
@@ -2559,11 +2593,12 @@ Kit 仍只有四个顶层命令;Quickstart Bundle 继续是 candidate 精确
|
|
|
2559
2593
|
<h3 id="scaffoldTarget--describeSkeletonFiles--describeSkeletonReferenceImplementation--normalizeSkeletonInputs">scaffoldTarget / describeSkeletonFiles / describeSkeletonReferenceImplementation / normalizeSkeletonInputs<a class="headerlink" href="#scaffoldTarget--describeSkeletonFiles--describeSkeletonReferenceImplementation--normalizeSkeletonInputs" title="Permanent link">¶</a></h3>
|
|
2560
2594
|
<ul>
|
|
2561
2595
|
<li>签名:</li>
|
|
2562
|
-
<li><code>scaffoldTarget({ root, projectId, projectName, profileId, licensingProfile, licensingVariant, licensingProfileData, profilesRoot, identityProjections, capabilities } = {})</code>(async)</li>
|
|
2596
|
+
<li><code>scaffoldTarget({ root, projectId, projectName, profileId, licensingProfile, licensingVariant, licensingProfileData, profilesRoot, identityProjections, engineering, capabilities = [] } = {})</code>(async)</li>
|
|
2563
2597
|
<li><code>describeSkeletonFiles(inputs)</code>(async)</li>
|
|
2564
2598
|
<li><code>describeSkeletonReferenceImplementation({ profile })</code>(async)</li>
|
|
2565
2599
|
<li><code>normalizeSkeletonInputs({ projectId, projectName, profileId, licensingProfile, licensingVariant, rootBasename })</code></li>
|
|
2566
|
-
<li>输入:目标根、骨架选项(<code>projectId</code>
|
|
2600
|
+
<li>输入:目标根、骨架选项(<code>projectId</code> 等)及可选 <code>engineering</code>。该参数属于本地 <code>0.24.0</code> 候选,正式 <code>0.23.0</code> 不支持;省略(<code>undefined</code>)保持原字节、文件集合与路径不变,<code>null</code>、空对象 <code>{}</code>、未知字段或非法引用均拒绝。<code>describeSkeletonFiles(inputs)</code> 与 <code>scaffoldTarget</code> 同源消费 <code>inputs.engineering</code>。</li>
|
|
2601
|
+
<li>工程声明沿用 Contracts 项目清单结构:<code>entries</code> 每项为 <code>name</code>、<code>form</code>、<code>physicalRef</code>,<code>form</code> 只接受 <code>skill_md</code> 或 <code>file</code>,前者须指向 <code>SKILL.md</code>。<code>releaseUnits</code> 每项为 <code>id</code>、<code>versionSource</code>,可选 <code>versionMirrors</code>;文本引用使用 <code>path</code> 与 <code>format: "text"</code>,JSON 引用另需 <code>format: "json"</code> 与非空 <code>jsonPointer</code>。依据真实业务入口和版本源声明,不取工程示例包、SDK 或 Profile 版本,也不从 <code>package.json</code> 推导 npm 分发。</li>
|
|
2567
2602
|
<li>输出:精确集合的托管骨架文件(原子 + 路径收容)。<code>scaffoldTarget()</code> 的结果另含 <code>referenceImplementation</code>,字段固定为当前 <code>foundationVersion</code>、所选 <code>profile</code> 与由规范文件清单计算的 <code>skeletonDigest</code>。该身份用于比较,不表示 Audit 合规,也不要求存量项目逐字节复制参考骨架。骨架含两个目标侧手写种子(<code>handwritten</code> 类,adopt 永不覆写):<code>SOURCE-OF-TRUTH.md</code>(唯一声明点、真源清单与生成谱系、运行与证据目录约定)与 <code>profile.json</code>(<code>foundation_profile</code> / <code>foundation_pin</code> 采用字段加只收紧方向的 overrides 示例);<code>.gitignore</code> / <code>.projenrc.js</code> / file-registry 三处同步携带根级唯一忽略基线 <code>/site/</code>、<code>/.qoder/</code>、<code>/.artifacts/</code>、<code>/.runs/</code>、<code>/.evidence/</code>(嵌套同名目录不被忽略)。</li>
|
|
2568
2603
|
<li>纯函数:<code>normalizeSkeletonInputs</code> 是;<code>describeSkeletonReferenceImplementation</code> 只读取包内许可证 Profile 并确定性计算身份;<code>scaffoldTarget</code> 落盘。</li>
|
|
2569
2604
|
<li>副作用:在受收容目标创建文件(原子 + 收容);目标非空则拒绝、不覆盖。</li>
|
|
@@ -2572,20 +2607,21 @@ Kit 仍只有四个顶层命令;Quickstart Bundle 继续是 candidate 精确
|
|
|
2572
2607
|
<li><code>since</code> / <code>stability</code>:既有骨架入口自 <code>0.2.0</code> / <code>stable</code>;<code>describeSkeletonReferenceImplementation</code> 与 scaffold 结果中的参考身份自 <code>0.17.0</code> / <code>stable</code>。</li>
|
|
2573
2608
|
<li>源文件:<code>packages/skill-family-engineering-kit/src/scaffold.mjs</code>、<code>skeleton.mjs</code>。</li>
|
|
2574
2609
|
<li>正例/负例测试:<code>packages/skill-family-engineering-kit/test/scaffold.test.mjs</code>、<code>skeleton-contract.test.mjs</code>。</li>
|
|
2575
|
-
<li
|
|
2610
|
+
<li>初始生成边界:声明与清单摘要由同一骨架生成器写入项目清单与原受管锁,不增加文件集合。空目标仅检查合同与根内路径形态,允许声明业务作者稍后创建的文件;不确认引用已存在,不代写领域内容。真实源落盘后再做 declared 检查。Schema 允许仅声明 <code>entries</code> 或 <code>releaseUnits</code>,但缺失的另一 declared 分支仍为 <code>incomplete</code>;省略整个对象不表示声明完成。</li>
|
|
2611
|
+
<li>调用方仍拥有的业务语义:业务项目内容、真实入口与版本来源、事实不足的报告(存量仓改用 <code>adopt-plan</code>)。</li>
|
|
2576
2612
|
</ul>
|
|
2577
2613
|
<hr />
|
|
2578
2614
|
<h2 id="adopt-plan-foundationkitadopt-plan">adopt-plan (foundation.kit.adopt-plan)<a class="headerlink" href="#adopt-plan-foundationkitadopt-plan" title="Permanent link">¶</a></h2>
|
|
2579
2615
|
<h3 id="planAdoption--buildProfileDraft--evaluateMigrationCompletion--validateException--assessLegacyExitList--findNestedRepositories">planAdoption / buildProfileDraft / evaluateMigrationCompletion / validateException / assessLegacyExitList / findNestedRepositories<a class="headerlink" href="#planAdoption--buildProfileDraft--evaluateMigrationCompletion--validateException--assessLegacyExitList--findNestedRepositories" title="Permanent link">¶</a></h3>
|
|
2580
2616
|
<ul>
|
|
2581
2617
|
<li>签名(节选):</li>
|
|
2582
|
-
<li><code>planAdoption({ root,
|
|
2618
|
+
<li><code>planAdoption({ root, projectId, projectName, profileId, licensingProfile, licensingVariant, licensingProfileData, profilesRoot, identityProjections, engineering, engineeringBaseline, compareSkeleton, allowGitSpawn = true, now = Date.now() } = {})</code>(async)</li>
|
|
2583
2619
|
<li><code>buildProfileDraft({ inputs, migrationManifest, writeSet, entries })</code></li>
|
|
2584
2620
|
<li><code>evaluateMigrationCompletion({ ... })</code></li>
|
|
2585
2621
|
<li><code>validateException(exception, index, nowMs)</code></li>
|
|
2586
2622
|
<li><code>assessLegacyExitList(root, legacyItems)</code>(async)</li>
|
|
2587
2623
|
<li><code>findNestedRepositories(entries)</code></li>
|
|
2588
|
-
<li
|
|
2624
|
+
<li>输入:目标根、骨架选项与可选工程声明。<code>engineering</code> 为可选对象,属于本地 <code>0.24.0</code> 候选,正式 <code>0.23.0</code> 不支持;省略保持旧行为,传入 <code>null</code>、空对象 <code>{}</code>、未知字段或非法引用均拒绝。它调用同源的 <code>describeSkeletonFiles</code>,预测与 <code>scaffold</code> 相同的声明字节,输入合同见本页 scaffold 节。工程基线比较是独立的按需功能;库调用必须同时传入已验证的 <code>engineeringBaseline</code> 与 <code>compareSkeleton: true</code>,CLI 必须成对使用 <code>--engineering-baseline <relative-json-path></code> 与 <code>--compare-skeleton</code>。</li>
|
|
2589
2625
|
<li>输出:默认仍返回采用分类(<code>direct-adoption</code> / <code>compatibility-layer</code> / <code>keep-business</code> / <code>foundation-gap</code>)、完成判定、profile 草稿(kind=<code>skill-family.profile-draft</code>:预填 D-8 最小采用声明 + 空 overrides 示例,仅输出,不落盘;adoption-lock 形态已废弃)。显式启用比较时才增加 <code>engineeringBaselineComparison</code>:它包含基线身份、Foundation 参考身份,以及参考侧独有、目标侧独有、条目类型和文件类别四类结构差异;不输出合规、等价、严重程度、finding、action、waiver 或 exemption 结论,也不返回规则正文。</li>
|
|
2590
2626
|
<li>纯函数:分类与评估函数为纯函数;<code>planAdoption</code> 含只读探测。</li>
|
|
2591
2627
|
<li>副作用:<strong>严格只读</strong>——不写文件(临时文件也不写)、不 Git 写、不 rename、不触网;默认可能启动一条冻结参数的只读 Git 探测,传入 <code>allowGitSpawn: false</code> 可关闭该子进程。</li>
|
|
@@ -2594,21 +2630,25 @@ Kit 仍只有四个顶层命令;Quickstart Bundle 继续是 candidate 精确
|
|
|
2594
2630
|
<li><code>since</code> / <code>stability</code>:既有采用规划自 <code>0.2.0</code> / <code>stable</code>;工程基线结构比较自 <code>0.17.0</code> / <code>stable</code>,默认关闭。</li>
|
|
2595
2631
|
<li>源文件:<code>packages/skill-family-engineering-kit/src/adopt-plan.mjs</code>、<code>migration.mjs</code>。</li>
|
|
2596
2632
|
<li>正例/负例测试:<code>packages/skill-family-engineering-kit/test/adopt-plan.test.mjs</code>、<code>migration.test.mjs</code>、<code>engineering-baseline-adopt-plan.test.mjs</code>、<code>cli.test.mjs</code>。</li>
|
|
2597
|
-
<li
|
|
2633
|
+
<li>计划边界:<code>engineering</code> 与 <code>engineeringBaseline</code> 独立,前者不取代后者的配对前提;能力目录查询不能混用工程声明。<code>writeSet</code>、<code>conflicts</code> 和 <code>complete</code> 不授权自动执行、不证明业务资格;部分声明缺失的另一 declared 分支仍为 <code>incomplete</code>。</li>
|
|
2634
|
+
<li>调用方仍拥有的业务语义:存量业务代码的迁移决策、真实声明来源与缺项处理(真正迁移执行由调用方负责)。</li>
|
|
2598
2635
|
</ul>
|
|
2636
|
+
<p>本地 0.24.0 候选中,当目标工程的 <code>skill-family.project-manifest.json</code> 中存在 <code>engineering</code> 字段时,采用检查应调用已有的 <code>runCoreCheck</code> 进行验证;若该字段不存在,则沿用原有的 <code>runChecks</code> 作为 legacy 检查路径。计划输入中包含的 <code>engineering</code> 参数仅用于描述拟议生成内容,不能作为目标当前已采纳状态的依据,亦不可替代真实清单声明。任何畸形的工程声明均不得回退至通过状态,必须由核心检查机制直接拒绝。<code>migration.check.green</code> 的值来源于实际运行的检查报告,其结果反映的是当前检查阶段的真实状态,而非迁移完成或业务资格的证明。原冲突、待执行写入、旧实现退出、绑定及 <code>unit</code>、<code>integration</code>、<code>consumer</code>、<code>independentAudit</code> 四类证明的门槛要求保持不变,检查通过不等于迁移已完成,也不代表具备业务资格。</p>
|
|
2599
2637
|
<hr />
|
|
2600
2638
|
<h2 id="projection-foundationkitprojection">projection (foundation.kit.projection)<a class="headerlink" href="#projection-foundationkitprojection" title="Permanent link">¶</a></h2>
|
|
2601
2639
|
<h3 id="runProjection--loadProjectionManifest">runProjection / loadProjectionManifest<a class="headerlink" href="#runProjection--loadProjectionManifest" title="Permanent link">¶</a></h3>
|
|
2602
2640
|
<ul>
|
|
2603
2641
|
<li>签名:</li>
|
|
2604
|
-
<li><code>runProjection({ root, manifest:
|
|
2642
|
+
<li><code>runProjection({ root, manifest: manifestInput, candidateRoot, faultInjector, preparedProjection, engineering } = {})</code>(async)</li>
|
|
2605
2643
|
<li><code>loadProjectionManifest(rootAbs, manifestRelPath)</code>(async)</li>
|
|
2606
|
-
<li
|
|
2607
|
-
<li
|
|
2644
|
+
<li>输入:原投影清单、目标根,或可选 <code>engineering</code>。新模式属于本地 <code>0.24.0</code> 候选,正式 <code>0.23.0</code> 不支持;省略保留原 v1/v2 与 prepared 路径。<code>runProjection({ root: targetRoot, engineering })</code> 完整替换整个声明,不做深合并;调用方传完整已确认对象,保留仍需使用的旧 <code>entries</code> 和 <code>releaseUnits</code>。不能与 <code>manifest</code>、<code>candidateRoot</code> 或 <code>preparedProjection</code> 同传;<code>null</code>、<code>{}</code>、未知字段与非法引用拒绝。字段合同见本页 scaffold 节。</li>
|
|
2645
|
+
<li>输出:原模式的投影文件(仅在校验全部通过时写入)。工程模式只更新 <code>skill-family.project-manifest.json</code> 和 <code>skill-family.managed-file-lock.json</code>,保留非 <code>engineering</code> 字段、registry 与其他文件字节、其他锁条目、生成器、版本、<code>lockVersion</code> 与 mode,清单摘要由原生成器派生,同内容幂等。沿用 <code>schemaVersion: 2</code> 的 <code>skill-family.projection-receipt</code>;内存候选的 <code>candidate.root</code> 与 <code>manifest.location</code> 为 <code>null</code>,不新增状态文件。</li>
|
|
2608
2646
|
<li>纯函数:<code>loadProjectionManifest</code> 是;<code>runProjection</code> 两阶段(全校验后才写,失败回滚)。</li>
|
|
2609
|
-
<li
|
|
2647
|
+
<li>副作用:在受收容目标写投影文件,不覆盖 handwritten 文件;首写前的预检失败零写。工程模式的修改后验证与回滚范围见下述失败边界,不把中途失败称为从未写入。</li>
|
|
2610
2648
|
<li>稳定错误码与 <code>details.kind</code>:未授权 / 手写冲突 / 越界 / 内容冲突抛 <code>KitError</code>(<code>rejected</code> / <code>unauthorized</code> 类 <code>kind</code>)。</li>
|
|
2611
|
-
<li
|
|
2649
|
+
<li>前置条件与信任锚:原模式要求投影清单已登记(<code>PROJECTION_MANIFEST_PATH</code>)。工程模式要求现有普通根与有效普通 registry、项目清单、受管锁;清单和锁均在 registry 与 <code>managedFiles</code> 内声明受管,清单锁条目由 Engineering Kit 拥有。所有其他受管文件匹配原锁,无缺覆盖、重复或未拥有的锁条目;工程引用为根内现存普通文件。缺前提只拒绝该受管更新,不自动接管任意非空项目,不手写候选清单或锁掩盖漂移。</li>
|
|
2650
|
+
<li>工程模式失败边界:保留原始已核引用快照,重复读取不能替换基线;每次实际修改前及完成后重验。首写前拒绝不执行恢复写,未尝试输出的外来字节保留。实际尝试写入失败沿既有错误处理、验证与尽力回滚,仅恢复本模式实际尝试的路径;不承诺整次初始化事务、恶意并发或 ABA 安全。原 v2 完整闭包回滚合同不变。</li>
|
|
2651
|
+
<li>声明完整性:允许只传 <code>entries</code> 或 <code>releaseUnits</code>,缺失的另一 declared 分支仍为 <code>incomplete</code>,生成收据不证明静态检查、真实业务、正式发现或整体资格完成。</li>
|
|
2612
2652
|
<li><code>since</code> / <code>stability</code>:<code>0.2.0</code> / <code>stable</code>。</li>
|
|
2613
2653
|
<li>源文件:<code>packages/skill-family-engineering-kit/src/projection.mjs</code>。</li>
|
|
2614
2654
|
<li>正例/负例测试:<code>packages/skill-family-engineering-kit/test/projection.test.mjs</code>。</li>
|
|
@@ -2631,7 +2671,7 @@ Kit 仍只有四个顶层命令;Quickstart Bundle 继续是 candidate 精确
|
|
|
2631
2671
|
</ul>
|
|
2632
2672
|
<hr />
|
|
2633
2673
|
<h2 id="check-foundationkitcheck">check (foundation.kit.check)<a class="headerlink" href="#check-foundationkitcheck" title="Permanent link">¶</a></h2>
|
|
2634
|
-
<h3 id="runChecks--runCoreCheck--runEntryContractCheck--checkEntriesAction--isContainedDeclaration">runChecks / runCoreCheck / runEntryContractCheck / checkEntriesAction / isContainedDeclaration<a class="headerlink" href="#runChecks--runCoreCheck--runEntryContractCheck--checkEntriesAction--isContainedDeclaration" title="Permanent link">¶</a></h3>
|
|
2674
|
+
<h3 id="runChecks--runCoreCheck--runEntryContractCheck--checkEntriesAction--isContainedDeclaration--readProfessionalProof--createProfessionalProof--publishProfessionalConclusion">runChecks / runCoreCheck / runEntryContractCheck / checkEntriesAction / isContainedDeclaration / readProfessionalProof / createProfessionalProof / publishProfessionalConclusion<a class="headerlink" href="#runChecks--runCoreCheck--runEntryContractCheck--checkEntriesAction--isContainedDeclaration--readProfessionalProof--createProfessionalProof--publishProfessionalConclusion" title="Permanent link">¶</a></h3>
|
|
2635
2675
|
<ul>
|
|
2636
2676
|
<li>签名:</li>
|
|
2637
2677
|
<li><code>runChecks({ root, allowGitSpawn = true, only, profilesRoot, policy = "legacy" } = {})</code>(async)</li>
|
|
@@ -2639,18 +2679,25 @@ Kit 仍只有四个顶层命令;Quickstart Bundle 继续是 candidate 精确
|
|
|
2639
2679
|
<li><code>runEntryContractCheck({ root, policy = "legacy" } = {})</code>(async)</li>
|
|
2640
2680
|
<li><code>checkEntriesAction({ root, policy, conclusionOutput } = {})</code>(async)</li>
|
|
2641
2681
|
<li><code>isContainedDeclaration(rel)</code></li>
|
|
2682
|
+
<li><code>readProfessionalProof({ proofRoot, proof })</code>(async)</li>
|
|
2683
|
+
<li><code>createProfessionalProof({ reviewRoot, reviewInput, conclusionOutput })</code>(async)</li>
|
|
2684
|
+
<li><code>publishProfessionalConclusion({ conclusionOutput, report, entry })</code>(async)</li>
|
|
2642
2685
|
<li>输入:legacy 政策沿用九类 <code>--only</code>。declared 版本检查须显式传入 <code>policy: "declared"</code> 与 <code>only: "version"</code>;declared 入口检查通过 <code>runEntryContractCheck</code> 或 <code>check entries --policy declared</code> 读取项目清单的 <code>engineering.entries</code>。</li>
|
|
2643
2686
|
<li>输出:原有发现清单与 <code>ok=0</code>、<code>findings=1</code>、<code>mechanism=2</code> 映射不变。声明缺失或不合法是不可检查的领域发现;读取普通文件时发生安全或机制中断则保留为机制失败。报告只把已经完成的发行单元或入口列入结果,不把后续未访问项写成完成。</li>
|
|
2644
2687
|
<li>纯函数:否(读取目标文件);但纯检查函数只诊断、不修复、不写。declared 分支不会运行目标脚本、Skill、hook、模型、Git 探测或其他未选择分类。</li>
|
|
2645
2688
|
<li>副作用:无文件写入;默认可能启动一条冻结参数的只读 Git 探测(至多一次冻结 <code>status</code> 查询),传入 <code>allowGitSpawn: false</code> 可关闭该子进程。</li>
|
|
2646
|
-
<li>declared 副作用:声明分支零 spawn、零 Git、零网络。只有 <code>runCommand("check")</code> 与 <code>checkEntriesAction</code> 包装入口收到 <code>conclusionOutput: { root, path }</code> 时,才在已存在输出根内独占创建一个结论文件;不创建父目录、不覆盖现有文件。纯检查函数和缺省 CLI
|
|
2689
|
+
<li>declared 副作用:声明分支零 spawn、零 Git、零网络。只有 <code>runCommand("check")</code> 与 <code>checkEntriesAction</code> 包装入口收到 <code>conclusionOutput: { root, path }</code> 时,才在已存在输出根内独占创建一个结论文件;不创建父目录、不覆盖现有文件。纯检查函数和缺省 CLI 都不写。<code>readProfessionalProof</code> 只读解释本族证明,不扫描目标、不追随 <code>details</code> 路径。<code>createProfessionalProof</code> 把 Skill 审阅 JSON 投影为 <code>FOUNDATION_STATIC_*</code> 结论,沿用同一排他写入;全部 <code>not_applicable</code> 只能是 <code>FOUNDATION_STATIC_INCOMPLETE</code>。<code>publishProfessionalConclusion</code> 继续把 declared 两分支投影为局部 <code>ENGINEERING_*</code> 结论。</li>
|
|
2647
2690
|
<li>稳定错误码与 <code>details.kind</code>:<code>CHECK_CLASSES</code> 为九类闭集,不扩张(审计整改 C2 依裁决 SG-13/14、SG-17、SFA-PLAT-002 增设 <code>boundary</code>、<code>platform</code> 两类,并为 <code>version</code> 类加装版本单源一致性事实;扩类经治理批准,此后仍不扩张);机制失败抛 <code>KitError</code>(<code>mechanism</code> 类)。</li>
|
|
2648
2691
|
<li>前置条件与信任锚:legacy 的 Git 探测由 <code>GIT_READ_ONLY_ALLOWLIST</code> 限定。declared 分支要求项目根存在符合 Contracts 1.20.0 的 <code>skill-family.project-manifest.json</code>;每个版本来源与入口都是根内相对路径,严格读取普通文件。</li>
|
|
2649
2692
|
<li><code>since</code> / <code>stability</code>:<code>0.2.0</code> / <code>stable</code>。</li>
|
|
2650
2693
|
<li>源文件:<code>packages/skill-family-engineering-kit/src/check.mjs</code>、<code>entry-check.mjs</code>、<code>engineering-declaration.mjs</code>、<code>professional-conclusion.mjs</code> 与 <code>core-check.mjs</code>。</li>
|
|
2651
|
-
<li>正例/负例测试:<code>packages/skill-family-engineering-kit/test/check.test.mjs</code>、<code>entry-check.test.mjs</code>、<code>core-check.test.mjs</code>、<code>check-equivalence.test.mjs</code> 与 <code>
|
|
2694
|
+
<li>正例/负例测试:<code>packages/skill-family-engineering-kit/test/check.test.mjs</code>、<code>entry-check.test.mjs</code>、<code>core-check.test.mjs</code>、<code>check-equivalence.test.mjs</code>、<code>cli.test.mjs</code> 与 <code>professional-conclusion.test.mjs</code>。</li>
|
|
2652
2695
|
<li>调用方仍拥有的业务语义:声明哪些单元和入口应受检、处置发现项、解释专业 code 与详情、向消费方传递结论路径,以及授权和管理结论输出根。自动修复仍由调用方负责。</li>
|
|
2653
2696
|
</ul>
|
|
2697
|
+
<h4 id="本地-0240-候选的-core-版本接线">本地 0.24.0 候选的 core 版本接线<a class="headerlink" href="#本地-0240-候选的-core-版本接线" title="Permanent link">¶</a></h4>
|
|
2698
|
+
<p>本地 0.24.0 候选对公开 <code>runCoreCheck</code> 作一项窄行为修复:目标真实声明 <code>engineering.releaseUnits</code> 时,版本类复用已有声明式版本读取逻辑,依据 <code>versionSource</code> 与 <code>versionMirrors</code> 检查文本或 JSON 格式的版本信息;私有工程的 <code>package.json</code> 不自动成为该业务单元的版本源或镜像,仅当被显式声明时方可参与版本认定。对于真正未声明版本、或仅包含合法 <code>entries</code> 的目标,仍沿用原有 legacy 版本检查路径。非法或重复的声明不回退为通过;声明的版本源或镜像缺失、不可读时如实失败。</p>
|
|
2699
|
+
<p>核心调度机制保持不变,共用原九类循环与报告流程,保留 Contracts 规格版本一致性检查及其他八类校验。声明的来源、镜像及各祖先路径均需先通过原树枚举与 <code>lstat</code> 安全预检,包括原不展开的工具目录;仅探查声明所涉路径,不引入新的目录遍历器。符号链接、FIFO 及其他不安全读集仍按原规则拒绝访问,禁止穿过根内符号链接目录;<code>completed</code>、<code>mechanism</code> 与 0/1/2 退出码如实传播。</p>
|
|
2700
|
+
<p>本次变更仅限于公开 core 在已声明版本目标上的适用性调整:公共 <code>runChecks</code> 缺省行为仍等同于显式 <code>policy: "legacy"</code>,涵盖原版本发现及 <code>full</code>/<code>only</code> 等价逻辑;显式 <code>policy: "declared"</code> 仍仅允许 <code>only: "version"</code>,维持原报告形式、不执行目标代码、不调用 Git 的边界。未新增任何公共 policy 值、API、CLI 参数、Schema 定义或包根导出,亦不在目标生成 shim 中复制检查逻辑。候选实现与局部验证不构成正式发布、业务资格或整体初始化完成的证明。</p>
|
|
2654
2701
|
<hr />
|
|
2655
2702
|
<h2 id="report-foundationkitreport">report (foundation.kit.report)<a class="headerlink" href="#report-foundationkitreport" title="Permanent link">¶</a></h2>
|
|
2656
2703
|
<h3 id="renderReportAction--checkReportAction">renderReportAction / checkReportAction<a class="headerlink" href="#renderReportAction--checkReportAction" title="Permanent link">¶</a></h3>
|
|
@@ -2767,11 +2814,12 @@ Kit 仍只有四个顶层命令;Quickstart Bundle 继续是 candidate 精确
|
|
|
2767
2814
|
<li>签名:</li>
|
|
2768
2815
|
<li><code>runCommand(command, options = {})</code>(async)—— 按 <code>TOP_LEVEL_COMMANDS</code> 分派,返回 <code>{ exitCode, output }</code></li>
|
|
2769
2816
|
<li><code>cliMain(argv)</code>(async)—— CLI 入口</li>
|
|
2770
|
-
<li>输入:<code>argv</code
|
|
2817
|
+
<li>输入:<code>argv</code>。本地 <code>0.24.0</code> 候选版本在原 <code>scaffold</code>、<code>adopt-plan</code>、<code>projection</code> 三个命令中接收 <code>--engineering <JSON></code>,正式 <code>0.23.0</code> 不支持;<code><JSON></code> 为工程对象的 JSON 字符串,不是文件路径。省略该选项时保持旧行为;传入非法 JSON、<code>null</code>、空对象 <code>{}</code>、未知字段、非法引用或重复选项均被拒绝。</li>
|
|
2818
|
+
<li>参数组合:<code>adopt-plan</code> 的 <code>--engineering</code> 不能用于能力目录查询,也不替代必须与 <code>--compare-skeleton</code> 成对的 <code>--engineering-baseline</code>。<code>projection --engineering</code> 不能与 <code>--manifest</code> 同传;库调用还禁止与 <code>candidateRoot</code>、<code>preparedProjection</code> 同传。四个顶层命令及既有 check、host、proof 职责不变,当前 help 文本尚未列出这个新参数。</li>
|
|
2771
2819
|
<li>输出:命令结果;退出码 <code>ok=0</code> / <code>findings=1</code> / <code>rejected=2</code>。</li>
|
|
2772
2820
|
<li>纯函数:否(依命令产生受收容文件写入或只读探测)。</li>
|
|
2773
2821
|
<li>副作用:依子动作而定:<code>scaffold</code> / <code>projection</code> 在受收容目标写入;<code>adopt-plan</code> 与普通 <code>check</code> 只读;<code>check relock</code> 是显式受控写事务;<code>check qualification</code> 预检通过后可能启动绑定的 executable。Foundation 自身不发起网络请求,但绑定的 executable 可能联网;Foundation 不提供 sandbox 或 egress 阻断,调用方与运行环境负责隔离。<code>REFUSED_MUTATION_FLAGS</code>(如 <code>--apply</code>)在 <code>parseOptions</code> 入口即拒。</li>
|
|
2774
|
-
<li>declared 包装入口是普通 <code>check</code> 的显式例外:只有结论输出根与根内相对路径同时给出时,<code>runCommand("check")</code> 或 <code>checkEntriesAction</code>
|
|
2822
|
+
<li>declared 包装入口是普通 <code>check</code> 的显式例外:只有结论输出根与根内相对路径同时给出时,<code>runCommand("check")</code> 或 <code>checkEntriesAction</code> 才独占创建一份结论文件;纯检查函数不写。<code>check proof --proof-root --proof --json</code> 只读解释本族证明;<code>check proof-create --review-root --review-input --conclusion-root --conclusion-output --json</code> 从 Skill 审阅结果独占创建一份结论。</li>
|
|
2775
2823
|
<li>稳定错误码与 <code>details.kind</code>:未知命令 / 拒绝旗标退出码 <code>2</code>(<code>unknown-command</code> / <code>refused-mutation</code>)。</li>
|
|
2776
2824
|
<li>前置条件与信任锚:Node >= 22.22.2;<code>TOP_LEVEL_COMMANDS</code> 固定 4 个,第 5 个命令禁止新增;<code>REFUSED_MUTATION_FLAGS</code> 在解析入口即拒。</li>
|
|
2777
2825
|
<li><code>since</code> / <code>stability</code>:<code>0.2.0</code> / <code>stable</code>。</li>
|