skill-family-engineering-kit 0.2.1 → 0.3.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 (31) hide show
  1. package/CHANGELOG.md +22 -0
  2. package/CHANGELOG.zh-CN.md +22 -0
  3. package/README.md +15 -12
  4. package/README.zh-CN.md +15 -12
  5. package/candidate/profile-bundle.mjs +1058 -176
  6. package/candidate/projection-bundle-cli.mjs +57 -15
  7. package/candidate/skill-naming-cli.mjs +59 -0
  8. package/candidate/skill-naming-policy.json +46 -0
  9. package/candidate/skill-naming.mjs +280 -0
  10. package/docs/agents/capability-catalog.en.json +13 -10
  11. package/docs/agents/capability-catalog.json +3 -2
  12. package/docs/agents/capability-catalog.zh-CN.json +13 -10
  13. package/docs/en/migration/index.html +4 -3
  14. package/docs/en/recipes/adopt-existing-repository/index.html +2 -1
  15. package/docs/en/recipes/domain-schema-validation/index.html +3 -1
  16. package/docs/en/recipes/index.html +2 -1
  17. package/docs/en/reference/api/index.html +24 -0
  18. package/docs/en/reference/compatibility/index.html +51 -5
  19. package/docs/migration/index.html +4 -3
  20. package/docs/public/status/index.html +3 -3
  21. package/docs/recipes/adopt-existing-repository/index.html +2 -1
  22. package/docs/recipes/domain-schema-validation/index.html +3 -1
  23. package/docs/recipes/index.html +2 -1
  24. package/docs/reference/api/contracts/index.html +26 -0
  25. package/docs/reference/api/engineering-kit/index.html +26 -0
  26. package/docs/reference/api/harness/index.html +27 -1
  27. package/docs/reference/api/index.html +25 -1
  28. package/docs/reference/compatibility/index.html +51 -5
  29. package/docs/search/search_index.json +1 -1
  30. package/package.json +5 -4
  31. package/release-notes/0.3.0.yaml +25 -0
@@ -2113,9 +2113,9 @@
2113
2113
  ],
2114
2114
  "targetProfile": "generic",
2115
2115
  "foundationPackages": [
2116
- { "name": "skill-family-contracts", "version": "0.2.1", "digest": "sha256:<64 hex digits>" },
2117
- { "name": "skill-family-harness-node", "version": "0.2.1", "digest": "sha256:<64 hex digits>" },
2118
- { "name": "skill-family-engineering-kit", "version": "0.2.1", "digest": "sha256:<64 hex digits>" }
2116
+ { "name": "skill-family-contracts", "version": "0.3.0", "digest": "sha256:<64 hex digits>" },
2117
+ { "name": "skill-family-harness-node", "version": "0.3.0", "digest": "sha256:<64 hex digits>" },
2118
+ { "name": "skill-family-engineering-kit", "version": "0.3.0", "digest": "sha256:<64 hex digits>" }
2119
2119
  ],
2120
2120
  "verification": {
2121
2121
  "unit": "docs/evidence/unit.json",
@@ -2126,6 +2126,7 @@
2126
2126
  }
2127
2127
  </code></pre>
2128
2128
  <p>The structure above shows the core fields of the migration manifest; each <code>legacyInfra</code> entry gives the legacy-implementation path and its replacement; the tool only read-only evaluates existence and never deletes on its behalf.</p>
2129
+ <p>The Quickstart Profile candidate moves to v2 in 0.3.0. A migration manifest that binds candidate capabilities must pin all three Foundation packages to exactly 0.3.0; an existing integration that still requires v1 must keep all three packages pinned to exactly 0.2.1 and must not mix the two sets.</p>
2129
2130
  <ul>
2130
2131
  <li><code>legacyInfra</code>: each entry gives the legacy-implementation path and its replacement; the tool only read-only evaluates existence and never deletes on its behalf.</li>
2131
2132
  <li><code>exceptions</code> are <strong>temporary exceptions</strong>: must simultaneously contain all four fields — owner, reason, deadline, and migrationTarget — and missing any field counts as a conflict (plan failure); expired exceptions are not auto-renewed and persistently block the completion judgment.</li>
@@ -1903,7 +1903,7 @@
1903
1903
  <li>Trust boundary: <code>adopt-plan</code> makes zero byte changes to the input repository; legacy-implementation deletion is the caller's responsibility, and the tool never deletes on its behalf.</li>
1904
1904
  </ul>
1905
1905
  <h2 id="4-Minimal-Command">4. Minimal Command<a class="headerlink" href="#4-Minimal-Command" title="Permanent link">&para;</a></h2>
1906
- <pre><code class="language-sh">npm install --save-dev skill-family-engineering-kit@0.2.1
1906
+ <pre><code class="language-sh">npm install --save-dev skill-family-engineering-kit@0.3.0
1907
1907
  npm exec -- skill-family-kit adopt-plan --root &lt;repo&gt;
1908
1908
  </code></pre>
1909
1909
  <h2 id="5-Expected-Output-and-Evidence">5. Expected Output and Evidence<a class="headerlink" href="#5-Expected-Output-and-Evidence" title="Permanent link">&para;</a></h2>
@@ -1926,6 +1926,7 @@ npm exec -- skill-family-kit check --root fixtures/m0-consumer
1926
1926
  <ul>
1927
1927
  <li><code>adopt-plan</code> is read-only, has no write risk, and needs no rollback.</li>
1928
1928
  <li>Actual disk writes are performed by <code>scaffold</code>/<code>projection</code>; rollback relies on the dual-digest binding of <code>adoptionProof</code> and <code>foundationPlanDigest</code>; an overwrite action that does not declare the <code>expect.sha256</code> pre-state is refused at the <code>projection</code> stage.</li>
1929
+ <li>When adopting the Quickstart Profile candidate, pin all three packages to one profile: 0.3.0 for v2 or 0.2.1 for v1. Do not mix them.</li>
1929
1930
  </ul>
1930
1931
 
1931
1932
 
@@ -1895,6 +1895,7 @@
1895
1895
  <h2 id="1-Scenario-and-Non-Scenario">1. Scenario and Non-Scenario<a class="headerlink" href="#1-Scenario-and-Non-Scenario" title="Permanent link">&para;</a></h2>
1896
1896
  <p>Applicable: you need to validate whether a document conforms to a Foundation-registered contract object (e.g., project-manifest), choosing a validation strategy by dialect.</p>
1897
1897
  <p>Not applicable: needs to validate the consumer's own business Schema (the consumer should hold it itself; Foundation does not replace it); needs to mix domain-semantic validation into the generic contract.</p>
1898
+ <p>Quickstart Profile v2 is a separate candidate path. The consumer still owns its business schemas; Engineering Kit only compiles an explicit schema collection into offline validators selected by <code>$id</code>, and does not own the method-to-schema choice.</p>
1898
1899
  <h2 id="2-Architecture-Choice-and-Capability-ID">2. Architecture Choice and Capability ID<a class="headerlink" href="#2-Architecture-Choice-and-Capability-ID" title="Permanent link">&para;</a></h2>
1899
1900
  <p>Preferred capability: <code>foundation.contracts.object-validation</code> (<code>validateDocument</code> / <code>compileSchema</code> / <code>detectDialect</code>). A pure Ajv implementation, supporting draft-07 and 2020-12.</p>
1900
1901
  <h2 id="3-Preconditions-and-Trust-Boundary">3. Preconditions and Trust Boundary<a class="headerlink" href="#3-Preconditions-and-Trust-Boundary" title="Permanent link">&para;</a></h2>
@@ -1945,8 +1946,9 @@ if (!bad.valid) console.error(bad.errorCode); // SFC1002
1945
1946
  </ul>
1946
1947
  <h2 id="9-Upgrade-and-Rollback-Notes">9. Upgrade and Rollback Notes<a class="headerlink" href="#9-Upgrade-and-Rollback-Notes" title="Permanent link">&para;</a></h2>
1947
1948
  <ul>
1948
- <li>The contract authority version <code>CONTRACTS_VERSION = 1.4.0</code>, and the npm package version <code>0.2.1</code> run in parallel and are not mixed.</li>
1949
+ <li>The contract authority version <code>CONTRACTS_VERSION = 1.4.0</code>, and the npm package version <code>0.3.0</code> run in parallel and are not mixed.</li>
1949
1950
  <li>Error codes are frozen and do not drift; Schema changes are handled as a new contract-version task, not by modifying frozen content in place.</li>
1951
+ <li>Candidate v2 must be pinned to exactly 0.3.0; integrations that still require v1 must remain pinned to exactly 0.2.1.</li>
1950
1952
  </ul>
1951
1953
 
1952
1954
 
@@ -1770,13 +1770,14 @@
1770
1770
  <li>Need durable events and derived snapshots → see <code>durable-local-state</code>.</li>
1771
1771
  <li>Need an existing-repository adoption inventory → see <code>adopt-existing-repository</code>.</li>
1772
1772
  <li>Need a text-resource closure or host access → see <code>adapter-text-closure</code> / <code>host-profile-integration</code>.</li>
1773
+ <li>Need to trial Quickstart Profile v2 → pin the 0.3.0 candidate subpaths of all three packages exactly; remain on exactly 0.2.1 when v1 is still required.</li>
1773
1774
  </ul>
1774
1775
  <h2 id="Common-Verification-Conventions">Common Verification Conventions<a class="headerlink" href="#Common-Verification-Conventions" title="Permanent link">&para;</a></h2>
1775
1776
  <ul>
1776
1777
  <li>All examples run in a <strong>new system temp directory</strong>, leaving no personal paths or credentials.</li>
1777
1778
  <li>Examples contain no enterprise identifiers, private Profiles, real business data, or personal paths.</li>
1778
1779
  <li>Each recipe gives at least one positive case and one negative case; the negative case must produce a stable failure code or refusal.</li>
1779
- <li>Verification commands can be copied and run directly; when a package is needed, first <code>npm install</code> the corresponding <code>@0.2.1</code>.</li>
1780
+ <li>Verification commands can be copied and run directly; when a package is needed, first <code>npm install</code> the corresponding <code>@0.3.0</code>.</li>
1780
1781
  </ul>
1781
1782
  <h2 id="Capability-ID-Overview">Capability ID Overview<a class="headerlink" href="#Capability-ID-Overview" title="Permanent link">&para;</a></h2>
1782
1783
  <table>
@@ -1292,6 +1292,17 @@
1292
1292
  </span>
1293
1293
  </a>
1294
1294
 
1295
+ </li>
1296
+
1297
+ <li class="md-nav__item">
1298
+ <a href="#Quickstart-Profile-v2-Candidate" class="md-nav__link">
1299
+ <span class="md-ellipsis">
1300
+
1301
+ Quickstart Profile v2 Candidate
1302
+
1303
+ </span>
1304
+ </a>
1305
+
1295
1306
  </li>
1296
1307
 
1297
1308
  <li class="md-nav__item">
@@ -1759,6 +1770,17 @@
1759
1770
  </span>
1760
1771
  </a>
1761
1772
 
1773
+ </li>
1774
+
1775
+ <li class="md-nav__item">
1776
+ <a href="#Quickstart-Profile-v2-Candidate" class="md-nav__link">
1777
+ <span class="md-ellipsis">
1778
+
1779
+ Quickstart Profile v2 Candidate
1780
+
1781
+ </span>
1782
+ </a>
1783
+
1762
1784
  </li>
1763
1785
 
1764
1786
  <li class="md-nav__item">
@@ -1848,6 +1870,8 @@
1848
1870
  <li>Engineering Kit keeps exactly four top-level commands: <code>scaffold</code>, <code>adopt-plan</code>, <code>projection</code>, and <code>check</code>. Each command retains its documented read-only or controlled-write boundary.</li>
1849
1871
  <li>Candidate capabilities are marked <code>stability: candidate</code> in the catalog. Their presence in the public package does not promote them to the stable surface.</li>
1850
1872
  </ul>
1873
+ <h2 id="Quickstart-Profile-v2-Candidate">Quickstart Profile v2 Candidate<a class="headerlink" href="#Quickstart-Profile-v2-Candidate" title="Permanent link">&para;</a></h2>
1874
+ <p>All three packages expose v2 through their existing candidate subpaths. Contracts defines the business-neutral <code>execute-method</code> exchange, Harness verifies bytes and bindings, and Kit turns explicit consumer schemas into an offline Bundle with standalone validators selected by schema <code>$id</code>. Version 0.3.0 candidate v2 is incompatible with the 0.2.1 candidate v1; consumers must pin the selected package versions exactly.</p>
1851
1875
  <h2 id="Detailed-Package-Pages">Detailed Package Pages<a class="headerlink" href="#Detailed-Package-Pages" title="Permanent link">&para;</a></h2>
1852
1876
  <p>The current signature-level package pages are maintained in Chinese because they enumerate every verified export and test reference:</p>
1853
1877
  <ul>
@@ -1216,6 +1216,17 @@
1216
1216
  </span>
1217
1217
  </a>
1218
1218
 
1219
+ </li>
1220
+
1221
+ <li class="md-nav__item">
1222
+ <a href="#Quickstart-Profile-Candidate-Compatibility" class="md-nav__link">
1223
+ <span class="md-ellipsis">
1224
+
1225
+ Quickstart Profile Candidate Compatibility
1226
+
1227
+ </span>
1228
+ </a>
1229
+
1219
1230
  </li>
1220
1231
 
1221
1232
  <li class="md-nav__item">
@@ -1748,6 +1759,17 @@
1748
1759
  </span>
1749
1760
  </a>
1750
1761
 
1762
+ </li>
1763
+
1764
+ <li class="md-nav__item">
1765
+ <a href="#Quickstart-Profile-Candidate-Compatibility" class="md-nav__link">
1766
+ <span class="md-ellipsis">
1767
+
1768
+ Quickstart Profile Candidate Compatibility
1769
+
1770
+ </span>
1771
+ </a>
1772
+
1751
1773
  </li>
1752
1774
 
1753
1775
  <li class="md-nav__item">
@@ -1840,33 +1862,56 @@
1840
1862
  <tbody>
1841
1863
  <tr>
1842
1864
  <td><code>skill-family-contracts</code></td>
1843
- <td>0.2.1</td>
1865
+ <td>0.3.0</td>
1844
1866
  <td>Contracts 1.4.0 machine contracts</td>
1845
1867
  <td>Public release target (private: false)</td>
1846
1868
  </tr>
1847
1869
  <tr>
1848
1870
  <td><code>skill-family-harness-node</code></td>
1849
- <td>0.2.1</td>
1871
+ <td>0.3.0</td>
1850
1872
  <td>Node thin-mechanism runtime of Contracts</td>
1851
1873
  <td>Public release target</td>
1852
1874
  </tr>
1853
1875
  <tr>
1854
1876
  <td><code>skill-family-engineering-kit</code></td>
1855
- <td>0.2.1</td>
1877
+ <td>0.3.0</td>
1856
1878
  <td>Four engineering commands (CLI <code>skill-family-kit</code>)</td>
1857
1879
  <td>Public release target</td>
1858
1880
  </tr>
1859
1881
  <tr>
1860
1882
  <td>Workspace repository</td>
1861
- <td>0.2.1</td>
1883
+ <td>0.3.0</td>
1862
1884
  <td>Private parent workspace (private: true)</td>
1863
1885
  <td>Development source of truth only</td>
1864
1886
  </tr>
1865
1887
  </tbody>
1866
1888
  </table>
1867
1889
  <blockquote>
1868
- <p>The contract authority version (<code>CONTRACTS_VERSION</code>) is <code>1.4.0</code>, and the npm package version is <code>0.2.1</code>; the two version lines run in parallel and are not mixed.</p>
1890
+ <p>The contract authority version (<code>CONTRACTS_VERSION</code>) is <code>1.4.0</code>, and the npm package version is <code>0.3.0</code>; the two version lines run in parallel and are not mixed.</p>
1869
1891
  </blockquote>
1892
+ <h2 id="Quickstart-Profile-Candidate-Compatibility">Quickstart Profile Candidate Compatibility<a class="headerlink" href="#Quickstart-Profile-Candidate-Compatibility" title="Permanent link">&para;</a></h2>
1893
+ <table>
1894
+ <thead>
1895
+ <tr>
1896
+ <th>Package version</th>
1897
+ <th>Candidate profile</th>
1898
+ <th>Compatibility rule</th>
1899
+ </tr>
1900
+ </thead>
1901
+ <tbody>
1902
+ <tr>
1903
+ <td>0.2.1</td>
1904
+ <td>v1</td>
1905
+ <td>Existing integrations may remain pinned to exactly 0.2.1</td>
1906
+ </tr>
1907
+ <tr>
1908
+ <td>0.3.0</td>
1909
+ <td>v2</td>
1910
+ <td>Uses <code>execute-method</code>, real <code>$id</code> schema resolution, and the offline Bundle; pin exactly 0.3.0</td>
1911
+ </tr>
1912
+ </tbody>
1913
+ </table>
1914
+ <p>Version 2 replaces v1 and provides no dual-track compatibility layer. Stable Contracts 1.4.0, the 18 object classes, the kernel protocol, and the error-code registry do not change with the candidate profile.</p>
1870
1915
  <h2 id="Node-Support-Matrix">Node Support Matrix<a class="headerlink" href="#Node-Support-Matrix" title="Permanent link">&para;</a></h2>
1871
1916
  <ul>
1872
1917
  <li>Engine requirement: <code>&gt;=22.22.2 &lt;23</code> (major 22 locked).</li>
@@ -1922,6 +1967,7 @@
1922
1967
  <li><strong>Kit commands</strong>: top-level commands are fixed at 4 (scaffold/adopt-plan/projection/check), not expanded; <code>REFUSED_MUTATION_FLAGS</code> are refused at the CLI entry point.</li>
1923
1968
  <li><strong>Node/pnpm/projen</strong>: follow the exact locks in <code>.foundation/version-lock.json</code> and <code>package.json</code>; upgrades require re-generating the managed projection via <code>pnpm synth</code>.</li>
1924
1969
  <li><strong>Host</strong>: adding a supported host requires registering a descriptor and binding a trusted driver; unsupported hosts (e.g., qoder) are only referenced structurally and not claimed to have been run on.</li>
1970
+ <li><strong>Candidate</strong>: a later minor version may change or remove a candidate subpath; do not mix the 0.2.1 v1 packages with the 0.3.0 v2 packages, and pin all three package versions exactly.</li>
1925
1971
  </ul>
1926
1972
  <h2 id="Anti-Compatibility-Boundaries-Explicitly-Unsupported">Anti-Compatibility Boundaries (Explicitly Unsupported)<a class="headerlink" href="#Anti-Compatibility-Boundaries-Explicitly-Unsupported" title="Permanent link">&para;</a></h2>
1927
1973
  <ul>
@@ -2113,9 +2113,9 @@
2113
2113
  ],
2114
2114
  &quot;targetProfile&quot;: &quot;generic&quot;,
2115
2115
  &quot;foundationPackages&quot;: [
2116
- { &quot;name&quot;: &quot;skill-family-contracts&quot;, &quot;version&quot;: &quot;0.2.1&quot;, &quot;digest&quot;: &quot;sha256:&lt;64 位十六进制&gt;&quot; },
2117
- { &quot;name&quot;: &quot;skill-family-harness-node&quot;, &quot;version&quot;: &quot;0.2.1&quot;, &quot;digest&quot;: &quot;sha256:&lt;64 位十六进制&gt;&quot; },
2118
- { &quot;name&quot;: &quot;skill-family-engineering-kit&quot;, &quot;version&quot;: &quot;0.2.1&quot;, &quot;digest&quot;: &quot;sha256:&lt;64 位十六进制&gt;&quot; }
2116
+ { &quot;name&quot;: &quot;skill-family-contracts&quot;, &quot;version&quot;: &quot;0.3.0&quot;, &quot;digest&quot;: &quot;sha256:&lt;64 位十六进制&gt;&quot; },
2117
+ { &quot;name&quot;: &quot;skill-family-harness-node&quot;, &quot;version&quot;: &quot;0.3.0&quot;, &quot;digest&quot;: &quot;sha256:&lt;64 位十六进制&gt;&quot; },
2118
+ { &quot;name&quot;: &quot;skill-family-engineering-kit&quot;, &quot;version&quot;: &quot;0.3.0&quot;, &quot;digest&quot;: &quot;sha256:&lt;64 位十六进制&gt;&quot; }
2119
2119
  ],
2120
2120
  &quot;verification&quot;: {
2121
2121
  &quot;unit&quot;: &quot;docs/evidence/unit.json&quot;,
@@ -2126,6 +2126,7 @@
2126
2126
  }
2127
2127
  </code></pre>
2128
2128
  <p>以上结构展示了迁移清单的核心字段;<code>legacyInfra</code> 每项给出旧实现路径与替代物,工具只读评估存在性,绝不代为删除。</p>
2129
+ <p>0.3.0 中的 Quickstart Profile candidate 已升级到 v2。迁移清单若绑定 candidate 能力,三个 Foundation 包必须统一精确锁定为 0.3.0;仍需 v1 的存量接入继续统一锁定 0.2.1,不混装两组版本。</p>
2129
2130
  <ul>
2130
2131
  <li><code>legacyInfra</code> 每项给出旧实现路径与替代物;工具只读评估存在性,绝不代为删除。</li>
2131
2132
  <li><code>exceptions</code> 是<strong>临时例外</strong>:必须同时含负责人(owner)、原因(reason)、截止时间(deadline)、迁移目标(migrationTarget)四项,缺任一字段即计为冲突(计划失败);到期例外不自动续期,持续阻断完成判定。</li>
@@ -1792,17 +1792,17 @@
1792
1792
  <tbody>
1793
1793
  <tr>
1794
1794
  <td><code>skill-family-contracts</code></td>
1795
- <td>0.2.1</td>
1795
+ <td>0.3.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.2.1</td>
1800
+ <td>0.3.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.2.1</td>
1805
+ <td>0.3.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>
@@ -1903,7 +1903,7 @@
1903
1903
  <li>信任边界:<code>adopt-plan</code> 对输入仓字节零变化;旧实现删除由调用方负责,工具绝不代为删除。</li>
1904
1904
  </ul>
1905
1905
  <h2 id="4-最小命令">4. 最小命令<a class="headerlink" href="#4-最小命令" title="Permanent link">&para;</a></h2>
1906
- <pre><code class="language-sh">npm install --save-dev skill-family-engineering-kit@0.2.1
1906
+ <pre><code class="language-sh">npm install --save-dev skill-family-engineering-kit@0.3.0
1907
1907
  npm exec -- skill-family-kit adopt-plan --root &lt;repo&gt;
1908
1908
  </code></pre>
1909
1909
  <h2 id="5-预期输出与证据">5. 预期输出与证据<a class="headerlink" href="#5-预期输出与证据" title="Permanent link">&para;</a></h2>
@@ -1926,6 +1926,7 @@ npm exec -- skill-family-kit check --root fixtures/m0-consumer
1926
1926
  <ul>
1927
1927
  <li><code>adopt-plan</code> 只读,无写风险,无需回滚。</li>
1928
1928
  <li>真正落盘由 <code>scaffold</code>/<code>projection</code> 执行,回滚以 <code>adoptionProof</code> 与 <code>foundationPlanDigest</code> 双摘要绑定为准;未声明 <code>expect.sha256</code> 前置状态的覆盖动作在 <code>projection</code> 阶段即拒绝。</li>
1929
+ <li>若采用 Quickstart Profile candidate,三个包按同一 profile 精确锁定:v2 使用 0.3.0,v1 继续使用 0.2.1,不混装。</li>
1929
1930
  </ul>
1930
1931
 
1931
1932
 
@@ -1895,6 +1895,7 @@
1895
1895
  <h2 id="1-场景与非场景">1. 场景与非场景<a class="headerlink" href="#1-场景与非场景" title="Permanent link">&para;</a></h2>
1896
1896
  <p>适用:需要校验一份文档是否符合 Foundation 已登记的契约对象(如 project-manifest),按方言选择校验策略。</p>
1897
1897
  <p>不适用:需要校验消费者自有业务 Schema(消费者应自行持有,Foundation 不取代);需要把领域语义校验混入通用契约。</p>
1898
+ <p>Quickstart Profile v2 是单独的 candidate 路径。消费者仍拥有业务 Schema;Engineering Kit 只在构建阶段把显式 Schema 集合编译成按 <code>$id</code> 查询的离线 validator,不接管 method 到 Schema 的选择。</p>
1898
1899
  <h2 id="2-架构选择及能力-ID">2. 架构选择及能力 ID<a class="headerlink" href="#2-架构选择及能力-ID" title="Permanent link">&para;</a></h2>
1899
1900
  <p>首选能力:<code>foundation.contracts.object-validation</code>(<code>validateDocument</code> / <code>compileSchema</code> / <code>detectDialect</code>)。纯 Ajv 实现,支持 draft-07 与 2020-12。</p>
1900
1901
  <h2 id="3-前置条件与信任边界">3. 前置条件与信任边界<a class="headerlink" href="#3-前置条件与信任边界" title="Permanent link">&para;</a></h2>
@@ -1945,8 +1946,9 @@ if (!bad.valid) console.error(bad.errorCode); // SFC1002
1945
1946
  </ul>
1946
1947
  <h2 id="9-升级与回滚注意事项">9. 升级与回滚注意事项<a class="headerlink" href="#9-升级与回滚注意事项" title="Permanent link">&para;</a></h2>
1947
1948
  <ul>
1948
- <li>契约权威版本 <code>CONTRACTS_VERSION = 1.4.0</code>,npm 包版本 <code>0.2.1</code> 并行,不混用。</li>
1949
+ <li>契约权威版本 <code>CONTRACTS_VERSION = 1.4.0</code>,npm 包版本 <code>0.3.0</code> 并行,不混用。</li>
1949
1950
  <li>错误码冻结不漂移;Schema 变更作为新的合同版本任务进行,不就地改冻结内容。</li>
1951
+ <li>candidate v2 必须精确锁定 0.3.0;仍需 v1 的接入继续精确锁定 0.2.1。</li>
1950
1952
  </ul>
1951
1953
 
1952
1954
 
@@ -1770,13 +1770,14 @@
1770
1770
  <li>需要持久事件与派生快照 → 看 <code>durable-local-state</code>。</li>
1771
1771
  <li>需要存量采用盘点 → 看 <code>adopt-existing-repository</code>。</li>
1772
1772
  <li>需要文本资源闭包或宿主接入 → 看 <code>adapter-text-closure</code> / <code>host-profile-integration</code>。</li>
1773
+ <li>需要试用 Quickstart Profile v2 → 精确锁定三个包的 0.3.0 candidate 子路径;需要 v1 时继续锁定 0.2.1。</li>
1773
1774
  </ul>
1774
1775
  <h2 id="共同验证约定">共同验证约定<a class="headerlink" href="#共同验证约定" title="Permanent link">&para;</a></h2>
1775
1776
  <ul>
1776
1777
  <li>所有示例在<strong>新的系统临时目录</strong>执行,不留个人路径或凭据。</li>
1777
1778
  <li>示例不含企业标识、私有 Profile、真实业务数据或个人路径。</li>
1778
1779
  <li>每个 recipe 至少给出一个正例与一个负例;负例必须产生稳定失败码或拒绝。</li>
1779
- <li>验证命令可直接复制运行;需要包时先 <code>npm install</code> 对应 <code>@0.2.1</code>。</li>
1780
+ <li>验证命令可直接复制运行;需要包时先 <code>npm install</code> 对应 <code>@0.3.0</code>。</li>
1780
1781
  </ul>
1781
1782
  <h2 id="能力-ID-总览">能力 ID 总览<a class="headerlink" href="#能力-ID-总览" title="Permanent link">&para;</a></h2>
1782
1783
  <table>
@@ -894,6 +894,17 @@
894
894
  </ul>
895
895
  </nav>
896
896
 
897
+ </li>
898
+
899
+ <li class="md-nav__item">
900
+ <a href="#Quickstart-Profile-v2-candidate" class="md-nav__link">
901
+ <span class="md-ellipsis">
902
+
903
+ Quickstart Profile v2 candidate
904
+
905
+ </span>
906
+ </a>
907
+
897
908
  </li>
898
909
 
899
910
  <li class="md-nav__item">
@@ -2140,6 +2151,17 @@
2140
2151
  </ul>
2141
2152
  </nav>
2142
2153
 
2154
+ </li>
2155
+
2156
+ <li class="md-nav__item">
2157
+ <a href="#Quickstart-Profile-v2-candidate" class="md-nav__link">
2158
+ <span class="md-ellipsis">
2159
+
2160
+ Quickstart Profile v2 candidate
2161
+
2162
+ </span>
2163
+ </a>
2164
+
2143
2165
  </li>
2144
2166
 
2145
2167
  <li class="md-nav__item">
@@ -2468,6 +2490,10 @@
2468
2490
  <li>调用方仍拥有的业务语义:审计语义结论(接受/拒绝属外部独立审阅)。</li>
2469
2491
  </ul>
2470
2492
  <hr />
2493
+ <h2 id="Quickstart-Profile-v2-candidate">Quickstart Profile v2 candidate<a class="headerlink" href="#Quickstart-Profile-v2-candidate" title="Permanent link">&para;</a></h2>
2494
+ <p><code>skill-family-contracts/candidate/quickstart-profile</code> 导出 v2 协议、按真实 <code>$id</code> 索引的 Resource/Task/Result Schema 集合,以及 <code>validateQuickstartProfileDocument</code>。唯一操作名是业务中立的 <code>execute-method</code>;Foundation 不登记 method 词表,也不解释 parameters、evidence 或 domainResult 的领域含义。</p>
2495
+ <p>该入口从 <code>0.2.1</code> 起公开,但稳定性仍为 <code>candidate</code>。0.3.0 已用 v2 替换 v1,两者不兼容:新接入需精确锁定 <code>0.3.0</code>,仍需 v1 的接入继续精确锁定 <code>0.2.1</code>。candidate Schema 不进入稳定 <code>src/registry.json</code>。</p>
2496
+ <hr />
2471
2497
  <h2 id="与机器事实层的互链">与机器事实层的互链<a class="headerlink" href="#与机器事实层的互链" title="Permanent link">&para;</a></h2>
2472
2498
  <ul>
2473
2499
  <li>能力稳定 ID 见 <code>docs/agents/capability-catalog.json</code>(<code>foundation.contracts.*</code>)。</li>
@@ -999,6 +999,17 @@
999
999
  </ul>
1000
1000
  </nav>
1001
1001
 
1002
+ </li>
1003
+
1004
+ <li class="md-nav__item">
1005
+ <a href="#Quickstart-Profile-v2-candidate" class="md-nav__link">
1006
+ <span class="md-ellipsis">
1007
+
1008
+ Quickstart Profile v2 candidate
1009
+
1010
+ </span>
1011
+ </a>
1012
+
1002
1013
  </li>
1003
1014
 
1004
1015
  <li class="md-nav__item">
@@ -2242,6 +2253,17 @@
2242
2253
  </ul>
2243
2254
  </nav>
2244
2255
 
2256
+ </li>
2257
+
2258
+ <li class="md-nav__item">
2259
+ <a href="#Quickstart-Profile-v2-candidate" class="md-nav__link">
2260
+ <span class="md-ellipsis">
2261
+
2262
+ Quickstart Profile v2 candidate
2263
+
2264
+ </span>
2265
+ </a>
2266
+
2245
2267
  </li>
2246
2268
 
2247
2269
  <li class="md-nav__item">
@@ -2487,6 +2509,10 @@
2487
2509
  </ul>
2488
2510
  <p>Kit 错误类型:<code>KitError extends ContractsError</code>(构造未登记码立即抛 <code>TypeError</code>);<code>KIT_ERROR_KINDS</code> 为稳定 kind 枚举;<code>kitError</code> / <code>invalidParamsError</code> / <code>unknownCommandError</code> / <code>mutationModeError</code> / <code>refusalError</code> 为构造辅助。<code>REFUSED_MUTATION_FLAGS</code> 列出入口即拒的变更旗标(如 <code>--apply</code>)。</p>
2489
2511
  <hr />
2512
+ <h2 id="Quickstart-Profile-v2-candidate">Quickstart Profile v2 candidate<a class="headerlink" href="#Quickstart-Profile-v2-candidate" title="Permanent link">&para;</a></h2>
2513
+ <p><code>skill-family-engineering-kit/candidate/quickstart-profile</code> 导出 <code>buildQuickstartProfileProjection</code> 与 <code>QUICKSTART_PROFILE_TARGET_PREFIX</code>。builder 接收显式消费者 Schema 路径与冻结来源身份,生成按 Schema <code>$id</code> 查询的 standalone validator、机械投影的 Contracts/Harness runtime、许可证和完整 provenance。</p>
2514
+ <p>Bundle 离线运行时不需要 Foundation 包、<code>node_modules</code> 或 Ajv。builder 只返回稳定 projection manifest,不写目标文件,也不增加第五个 Kit 顶层命令;调用方仍需把 manifest 交给 <code>runProjection</code> 完成授权写入。0.3.0 的 v2 与 0.2.1 的依赖闭包 Bundle 不兼容,必须精确锁定版本。</p>
2515
+ <hr />
2490
2516
  <h2 id="与机器事实层的互链">与机器事实层的互链<a class="headerlink" href="#与机器事实层的互链" title="Permanent link">&para;</a></h2>
2491
2517
  <ul>
2492
2518
  <li>能力稳定 ID 见 <code>docs/agents/capability-catalog.json</code>(<code>foundation.kit.*</code>、<code>foundation.unsupported.*</code>)。</li>
@@ -972,6 +972,17 @@
972
972
  </ul>
973
973
  </nav>
974
974
 
975
+ </li>
976
+
977
+ <li class="md-nav__item">
978
+ <a href="#Quickstart-Profile-v2-candidate" class="md-nav__link">
979
+ <span class="md-ellipsis">
980
+
981
+ Quickstart Profile v2 candidate
982
+
983
+ </span>
984
+ </a>
985
+
975
986
  </li>
976
987
 
977
988
  <li class="md-nav__item">
@@ -2242,6 +2253,17 @@
2242
2253
  </ul>
2243
2254
  </nav>
2244
2255
 
2256
+ </li>
2257
+
2258
+ <li class="md-nav__item">
2259
+ <a href="#Quickstart-Profile-v2-candidate" class="md-nav__link">
2260
+ <span class="md-ellipsis">
2261
+
2262
+ Quickstart Profile v2 candidate
2263
+
2264
+ </span>
2265
+ </a>
2266
+
2245
2267
  </li>
2246
2268
 
2247
2269
  <li class="md-nav__item">
@@ -2416,7 +2438,7 @@
2416
2438
  <li>纯函数:是(无时钟、无环境、无网络、无模型调用)。</li>
2417
2439
  <li>副作用:无文件/Git/网络。</li>
2418
2440
  <li>稳定错误码与 <code>details.kind</code>:<code>SFC3001</code>(<code>REPORT_DIGEST_MISMATCH</code>,绑定摘要不符或报告非模型规范渲染)、<code>SFC3002</code>(<code>REPORT_ELEMENT_MISSING</code>,强制元素缺失)、<code>SFC3003</code>(<code>REPORT_FACT_DRIFT</code>,报告改写绑定结果事实或字节与确定性再渲染不一致)。风格告警由 <code>collectStyleWarnings</code> 产出,仅建议、不编码、不阻断。</li>
2419
- <li>前置条件与信任锚:<code>REPORT_RENDERER_NAME</code> / <code>VERSION</code> 取自各自 package(当前 <code>0.2.1</code>);双输出成组写入并拒绝路径别名与输入覆盖。</li>
2441
+ <li>前置条件与信任锚:<code>REPORT_RENDERER_NAME</code> / <code>VERSION</code> 取自各自 package(当前 <code>0.3.0</code>);双输出成组写入并拒绝路径别名与输入覆盖。</li>
2420
2442
  <li><code>since</code> / <code>stability</code>:<code>0.2.0</code> / <code>stable</code>。</li>
2421
2443
  <li>源文件:<code>packages/skill-family-harness-node/src/report.mjs</code>。</li>
2422
2444
  <li>正例/负例测试:<code>packages/skill-family-harness-node/test/report.test.mjs</code>。</li>
@@ -2544,6 +2566,10 @@
2544
2566
  </tbody>
2545
2567
  </table>
2546
2568
  <hr />
2569
+ <h2 id="Quickstart-Profile-v2-candidate">Quickstart Profile v2 candidate<a class="headerlink" href="#Quickstart-Profile-v2-candidate" title="Permanent link">&para;</a></h2>
2570
+ <p><code>skill-family-harness-node/candidate/quickstart-profile</code> 负责创建 observation Resource、Task 与终态 Result,并复验真实文件字节、Resource id 全局唯一性、Task digest、operation 身份、逐字段 <code>run/stage/attempt</code> 以及 evidence 精确回指。<code>verifyQuickstartExchange</code> 把机制拒绝转换成结构化结果,抛出式入口继续使用已登记的 <code>SFC2004</code> 与稳定 <code>details.kind</code>。</p>
2571
+ <p>该入口不选择 method,不解释 domainResult,也不拥有重试、调度或生命周期。0.3.0 的 v2 与 0.2.1 的 v1 不兼容;接入必须精确锁定所选版本。</p>
2572
+ <hr />
2547
2573
  <h2 id="与机器事实层的互链">与机器事实层的互链<a class="headerlink" href="#与机器事实层的互链" title="Permanent link">&para;</a></h2>
2548
2574
  <ul>
2549
2575
  <li>能力稳定 ID 见 <code>docs/agents/capability-catalog.json</code>(<code>foundation.harness.*</code>)。</li>
@@ -671,6 +671,17 @@
671
671
  </span>
672
672
  </a>
673
673
 
674
+ </li>
675
+
676
+ <li class="md-nav__item">
677
+ <a href="#Quickstart-Profile-v2-candidate" class="md-nav__link">
678
+ <span class="md-ellipsis">
679
+
680
+ Quickstart Profile v2 candidate
681
+
682
+ </span>
683
+ </a>
684
+
674
685
  </li>
675
686
 
676
687
  </ul>
@@ -1737,6 +1748,17 @@
1737
1748
  </span>
1738
1749
  </a>
1739
1750
 
1751
+ </li>
1752
+
1753
+ <li class="md-nav__item">
1754
+ <a href="#Quickstart-Profile-v2-candidate" class="md-nav__link">
1755
+ <span class="md-ellipsis">
1756
+
1757
+ Quickstart Profile v2 candidate
1758
+
1759
+ </span>
1760
+ </a>
1761
+
1740
1762
  </li>
1741
1763
 
1742
1764
  </ul>
@@ -1796,8 +1818,10 @@
1796
1818
  <ul>
1797
1819
  <li>机制失败统一 <code>SFC2004</code>(<code>EXECUTION_FAILED</code>),由 <code>details.kind</code> 区分(<code>HARNESS_ERROR_KINDS</code> 冻结枚举);Contracts 校验失败(<code>SFC1001</code> / <code>SFC1002</code>)经 <code>validateDocument</code> 返回值表达、不抛异常。</li>
1798
1820
  <li>Kit 顶层命令集合固定为 4 个(<code>scaffold</code> / <code>adopt-plan</code> / <code>projection</code> / <code>check</code>),不扩张;<code>host apply</code> / <code>install</code> / <code>update</code> / <code>uninstall</code>、Qoder 完整 driver、二进制 adapter source、远端发布、业务状态机、模型编排、领域审计语义均明确 unsupported。</li>
1799
- <li>所有版本字段从 <code>package.json</code> 与 Contracts 真源生成或由 fact-check 校验;<code>CONTRACTS_VERSION=1.4.0</code> 与 npm 包版本 <code>0.2.1</code> 并行。</li>
1821
+ <li>所有版本字段从 <code>package.json</code> 与 Contracts 真源生成或由 fact-check 校验;<code>CONTRACTS_VERSION=1.4.0</code> 与 npm 包版本 <code>0.3.0</code> 并行。</li>
1800
1822
  </ul>
1823
+ <h2 id="Quickstart-Profile-v2-candidate">Quickstart Profile v2 candidate<a class="headerlink" href="#Quickstart-Profile-v2-candidate" title="Permanent link">&para;</a></h2>
1824
+ <p>三个包都通过既有 candidate 子路径公开 Quickstart Profile v2。Contracts 定义 <code>execute-method</code> 交换结构,Harness 复验字节和绑定,Kit 从显式消费者 Schema 生成离线 Bundle。该能力仍标记为 <code>candidate</code>,0.3.0 的 v2 与 0.2.1 的 v1 不兼容;消费者必须精确锁定所选包版本。</p>
1801
1825
 
1802
1826
 
1803
1827