skill-family-engineering-kit 0.2.0 → 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 (74) hide show
  1. package/CHANGELOG.md +43 -0
  2. package/CHANGELOG.zh-CN.md +43 -0
  3. package/NOTICE +10 -0
  4. package/README.md +160 -55
  5. package/README.zh-CN.md +210 -0
  6. package/candidate/index.mjs +4 -0
  7. package/candidate/profile-bundle.mjs +1150 -0
  8. package/candidate/projection-bundle-cli.mjs +64 -0
  9. package/candidate/skill-naming-cli.mjs +59 -0
  10. package/candidate/skill-naming-policy.json +46 -0
  11. package/candidate/skill-naming.mjs +280 -0
  12. package/docs/404.html +1434 -408
  13. package/docs/agents/architecture-routing/index.html +1944 -0
  14. package/docs/agents/capability-catalog.en.json +1564 -0
  15. package/docs/agents/capability-catalog.json +935 -0
  16. package/docs/agents/capability-catalog.schema.json +179 -0
  17. package/docs/agents/capability-catalog.zh-CN.json +1564 -0
  18. package/docs/agents/index.html +1914 -0
  19. package/docs/architecture/index.html +1706 -497
  20. package/docs/assets/javascripts/lunr/tinyseg.js +2 -2
  21. package/docs/assets/javascripts/lunr/wordcut.js +37 -37
  22. package/docs/en/agents/architecture-routing/index.html +1944 -0
  23. package/docs/en/agents/index.html +1925 -0
  24. package/docs/en/architecture/index.html +2187 -0
  25. package/docs/en/examples-and-fixtures/index.html +1888 -0
  26. package/docs/en/help/index.html +2035 -0
  27. package/docs/en/index.html +1895 -0
  28. package/docs/en/licensing/index.html +1917 -0
  29. package/docs/en/migration/index.html +2335 -0
  30. package/docs/en/quickstart/index.html +1919 -0
  31. package/docs/en/recipes/adapter-text-closure/index.html +2000 -0
  32. package/docs/en/recipes/adopt-existing-repository/index.html +1987 -0
  33. package/docs/en/recipes/deterministic-human-report/index.html +1998 -0
  34. package/docs/en/recipes/domain-schema-validation/index.html +2009 -0
  35. package/docs/en/recipes/durable-local-state/index.html +2009 -0
  36. package/docs/en/recipes/host-profile-integration/index.html +2001 -0
  37. package/docs/en/recipes/index.html +1877 -0
  38. package/docs/en/recipes/safe-filesystem-and-atomic-write/index.html +1994 -0
  39. package/docs/en/reference/api/index.html +1941 -0
  40. package/docs/en/reference/compatibility/index.html +2036 -0
  41. package/docs/en/reference/failure-and-side-effect-matrix/index.html +2216 -0
  42. package/docs/examples-and-fixtures/index.html +1871 -0
  43. package/docs/git-lifecycle/index.html +1508 -482
  44. package/docs/help/index.html +1655 -554
  45. package/docs/index.html +1479 -450
  46. package/docs/integration/audit/failure-evidence/index.html +1488 -462
  47. package/docs/integration/audit/independence/index.html +1513 -487
  48. package/docs/integration/audit/index.html +1514 -488
  49. package/docs/integration/audit/mutation-taxonomy/index.html +1548 -522
  50. package/docs/integration/audit/version-compatibility/index.html +1489 -463
  51. package/docs/licensing/index.html +1917 -0
  52. package/docs/migration/index.html +1679 -586
  53. package/docs/public/status/index.html +1542 -516
  54. package/docs/quickstart/index.html +1589 -539
  55. package/docs/recipes/adapter-text-closure/index.html +2000 -0
  56. package/docs/recipes/adopt-existing-repository/index.html +1987 -0
  57. package/docs/recipes/deterministic-human-report/index.html +1998 -0
  58. package/docs/recipes/domain-schema-validation/index.html +2009 -0
  59. package/docs/recipes/durable-local-state/index.html +2009 -0
  60. package/docs/recipes/host-profile-integration/index.html +2001 -0
  61. package/docs/recipes/index.html +1877 -0
  62. package/docs/recipes/safe-filesystem-and-atomic-write/index.html +1994 -0
  63. package/docs/reference/api/contracts/index.html +2558 -0
  64. package/docs/reference/api/engineering-kit/index.html +2577 -0
  65. package/docs/reference/api/harness/index.html +2634 -0
  66. package/docs/reference/api/index.html +1881 -0
  67. package/docs/reference/compatibility/index.html +2036 -0
  68. package/docs/reference/failure-and-side-effect-matrix/index.html +2216 -0
  69. package/docs/search/search_index.json +1 -1
  70. package/docs/setup/index.html +1494 -468
  71. package/docs/sitemap.xml +152 -0
  72. package/package.json +16 -5
  73. package/release-notes/0.2.1.yaml +23 -0
  74. package/release-notes/0.3.0.yaml +25 -0
@@ -2,100 +2,100 @@
2
2
  <!doctype html>
3
3
  <html lang="zh" class="no-js">
4
4
  <head>
5
-
5
+
6
6
  <meta charset="utf-8">
7
7
  <meta name="viewport" content="width=device-width,initial-scale=1">
8
-
8
+
9
9
  <meta name="description" content="Skill Family 生命周期公共工程基础设施父工作区">
10
-
11
-
12
-
10
+
11
+
12
+
13
13
  <link rel="canonical" href="https://ifoohoo.github.io/skill-family-engineering-kit/migration/">
14
-
15
-
14
+
15
+
16
16
  <link rel="prev" href="../public/status/">
17
-
18
-
19
- <link rel="next" href="../integration/audit/">
20
-
21
-
22
-
23
-
24
-
17
+
18
+
19
+ <link rel="next" href="../licensing/">
20
+
21
+
22
+
23
+
24
+
25
25
  <link rel="icon" href="../assets/images/favicon.png">
26
26
  <meta name="generator" content="mkdocs-1.6.1, mkdocs-material-9.7.7">
27
-
28
-
29
-
30
- <title>存量采用与迁移 - Skill Family Foundation</title>
31
-
32
-
33
-
27
+
28
+
29
+
30
+ <title>中文 · 存量采用与迁移 - Skill Family Foundation</title>
31
+
32
+
33
+
34
34
  <link rel="stylesheet" href="../assets/stylesheets/main.ec1eaa64.min.css">
35
-
36
-
35
+
36
+
37
37
  <link rel="stylesheet" href="../assets/stylesheets/palette.ab4e12ef.min.css">
38
-
39
-
40
-
41
-
42
-
43
-
44
-
45
-
46
-
47
-
48
-
49
-
38
+
39
+
40
+
41
+
42
+
43
+
44
+
45
+
46
+
47
+
48
+
49
+
50
50
  <script>__md_scope=new URL("..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script>
51
-
52
-
53
51
 
54
-
55
-
52
+
53
+
54
+
55
+
56
56
  </head>
57
-
58
-
59
-
60
-
61
-
62
-
63
-
64
-
65
-
57
+
58
+
59
+
60
+
61
+
62
+
63
+
64
+
65
+
66
66
  <body dir="ltr" data-md-color-scheme="default" data-md-color-primary="indigo" data-md-color-accent="indigo">
67
-
68
-
67
+
68
+
69
69
  <input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
70
70
  <input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
71
71
  <label class="md-overlay" for="__drawer"></label>
72
72
  <div data-md-component="skip">
73
-
74
-
73
+
74
+
75
75
  <a href="#存量采用与迁移FND-070" class="md-skip">
76
76
  跳转至
77
77
  </a>
78
-
78
+
79
79
  </div>
80
80
  <div data-md-component="announce">
81
-
81
+
82
82
  </div>
83
-
84
-
85
-
86
83
 
87
-
84
+
85
+
86
+
87
+
88
88
 
89
89
  <header class="md-header md-header--shadow" data-md-component="header">
90
90
  <nav class="md-header__inner md-grid" aria-label="页眉">
91
91
  <a href=".." title="Skill Family Foundation" class="md-header__button md-logo" aria-label="Skill Family Foundation" data-md-component="logo">
92
-
93
-
92
+
93
+
94
94
  <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg>
95
95
 
96
96
  </a>
97
97
  <label class="md-header__button md-icon" for="__drawer">
98
-
98
+
99
99
  <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg>
100
100
  </label>
101
101
  <div class="md-header__title" data-md-component="header-title">
@@ -107,49 +107,49 @@
107
107
  </div>
108
108
  <div class="md-header__topic" data-md-component="header-topic">
109
109
  <span class="md-ellipsis">
110
-
111
- 存量采用与迁移
112
-
110
+
111
+ 中文 · 存量采用与迁移
112
+
113
113
  </span>
114
114
  </div>
115
115
  </div>
116
116
  </div>
117
-
118
-
117
+
118
+
119
119
  <form class="md-header__option" data-md-component="palette">
120
-
121
-
122
-
123
-
120
+
121
+
122
+
123
+
124
124
  <input class="md-option" data-md-color-media="(prefers-color-scheme: light)" data-md-color-scheme="default" data-md-color-primary="indigo" data-md-color-accent="indigo" aria-label="切换到深色模式" type="radio" name="__palette" id="__palette_0">
125
-
125
+
126
126
  <label class="md-header__button md-icon" title="切换到深色模式" for="__palette_1" hidden>
127
127
  <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg>
128
128
  </label>
129
-
130
-
131
-
132
-
133
-
129
+
130
+
131
+
132
+
133
+
134
134
  <input class="md-option" data-md-color-media="(prefers-color-scheme: dark)" data-md-color-scheme="slate" data-md-color-primary="indigo" data-md-color-accent="indigo" aria-label="切换到浅色模式" type="radio" name="__palette" id="__palette_1">
135
-
135
+
136
136
  <label class="md-header__button md-icon" title="切换到浅色模式" for="__palette_0" hidden>
137
137
  <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12s-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg>
138
138
  </label>
139
-
140
-
139
+
140
+
141
141
  </form>
142
-
143
-
144
-
142
+
143
+
144
+
145
145
  <script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script>
146
-
147
-
148
-
149
-
150
-
146
+
147
+
148
+
149
+
150
+
151
151
  <label class="md-header__button md-icon" for="__search">
152
-
152
+
153
153
  <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg>
154
154
  </label>
155
155
  <div class="md-search" data-md-component="search" role="dialog">
@@ -158,19 +158,19 @@
158
158
  <form class="md-search__form" name="search">
159
159
  <input type="text" class="md-search__input" name="query" aria-label="搜索" placeholder="搜索" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" required>
160
160
  <label class="md-search__icon md-icon" for="__search">
161
-
161
+
162
162
  <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg>
163
-
163
+
164
164
  <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg>
165
165
  </label>
166
166
  <nav class="md-search__options" aria-label="查找">
167
-
167
+
168
168
  <button type="reset" class="md-search__icon md-icon" title="清空当前内容" aria-label="清空当前内容" tabindex="-1">
169
-
169
+
170
170
  <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg>
171
171
  </button>
172
172
  </nav>
173
-
173
+
174
174
  </form>
175
175
  <div class="md-search__output">
176
176
  <div class="md-search__scrollwrap" tabindex="0" data-md-scrollfix>
@@ -184,764 +184,1874 @@
184
184
  </div>
185
185
  </div>
186
186
  </div>
187
-
188
-
189
-
187
+
188
+
189
+
190
190
  </nav>
191
-
191
+
192
192
  </header>
193
-
193
+
194
194
  <div class="md-container" data-md-component="container">
195
-
196
-
197
-
198
-
199
-
200
-
195
+
196
+
197
+
198
+
199
+
200
+
201
201
  <main class="md-main" data-md-component="main">
202
202
  <div class="md-main__inner md-grid">
203
-
204
-
205
-
203
+
204
+
205
+
206
206
  <div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" >
207
207
  <div class="md-sidebar__scrollwrap">
208
208
  <div class="md-sidebar__inner">
209
-
209
+
210
210
 
211
211
 
212
212
 
213
213
  <nav class="md-nav md-nav--primary" aria-label="导航栏" data-md-level="0">
214
214
  <label class="md-nav__title" for="__drawer">
215
215
  <a href=".." title="Skill Family Foundation" class="md-nav__button md-logo" aria-label="Skill Family Foundation" data-md-component="logo">
216
-
217
-
216
+
217
+
218
218
  <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg>
219
219
 
220
220
  </a>
221
221
  Skill Family Foundation
222
222
  </label>
223
-
223
+
224
224
  <ul class="md-nav__list" data-md-scrollfix>
225
-
226
-
227
-
228
-
229
-
230
-
231
-
225
+
226
+
227
+
228
+
229
+
230
+
231
+
232
232
  <li class="md-nav__item">
233
233
  <a href=".." class="md-nav__link">
234
-
235
-
236
-
234
+
235
+
236
+
237
237
  <span class="md-ellipsis">
238
-
239
-
240
- 首页
241
-
242
238
 
243
-
239
+
240
+ 中文 · 首页
241
+
242
+
243
+
244
244
  </span>
245
-
246
-
245
+
246
+
247
247
 
248
248
  </a>
249
249
  </li>
250
-
251
-
252
-
253
-
254
-
255
-
256
-
257
-
258
-
250
+
251
+
252
+
253
+
254
+
255
+
256
+
257
+
258
+
259
259
  <li class="md-nav__item">
260
260
  <a href="../setup/" class="md-nav__link">
261
-
262
-
263
-
261
+
262
+
263
+
264
264
  <span class="md-ellipsis">
265
-
266
-
267
- 安装与环境
268
-
269
265
 
270
-
266
+
267
+ 中文 · 安装与环境
268
+
269
+
270
+
271
271
  </span>
272
-
273
-
272
+
273
+
274
274
 
275
275
  </a>
276
276
  </li>
277
-
278
-
279
-
280
-
281
-
282
-
283
-
284
-
285
-
277
+
278
+
279
+
280
+
281
+
282
+
283
+
284
+
285
+
286
286
  <li class="md-nav__item">
287
287
  <a href="../quickstart/" class="md-nav__link">
288
-
289
-
290
-
288
+
289
+
290
+
291
291
  <span class="md-ellipsis">
292
-
293
-
294
- 快速开始
295
-
296
292
 
297
-
293
+
294
+ 中文 · 快速开始
295
+
296
+
297
+
298
298
  </span>
299
-
300
-
299
+
300
+
301
301
 
302
302
  </a>
303
303
  </li>
304
-
305
-
306
-
307
-
308
-
309
-
310
-
311
-
312
-
304
+
305
+
306
+
307
+
308
+
309
+
310
+
311
+
312
+
313
313
  <li class="md-nav__item">
314
314
  <a href="../git-lifecycle/" class="md-nav__link">
315
-
316
-
317
-
315
+
316
+
317
+
318
318
  <span class="md-ellipsis">
319
-
320
-
321
- Git 生命周期指南
322
-
323
319
 
324
-
320
+
321
+ 中文 · Git 生命周期指南
322
+
323
+
324
+
325
325
  </span>
326
-
327
-
326
+
327
+
328
328
 
329
329
  </a>
330
330
  </li>
331
-
332
-
333
-
334
-
335
-
336
-
337
-
338
-
339
-
331
+
332
+
333
+
334
+
335
+
336
+
337
+
338
+
339
+
340
340
  <li class="md-nav__item">
341
341
  <a href="../help/" class="md-nav__link">
342
-
343
-
344
-
342
+
343
+
344
+
345
345
  <span class="md-ellipsis">
346
-
347
-
348
- 能力与诊断
349
-
350
346
 
351
-
347
+
348
+ 中文 · 能力与诊断
349
+
350
+
351
+
352
352
  </span>
353
-
354
-
353
+
354
+
355
355
 
356
356
  </a>
357
357
  </li>
358
-
359
-
360
-
361
-
362
-
363
-
364
-
365
-
366
-
358
+
359
+
360
+
361
+
362
+
363
+
364
+
365
+
366
+
367
367
  <li class="md-nav__item">
368
368
  <a href="../architecture/" class="md-nav__link">
369
-
370
-
371
-
369
+
370
+
371
+
372
372
  <span class="md-ellipsis">
373
-
374
-
375
- 架构边界
376
-
377
373
 
378
-
374
+
375
+ 中文 · 架构边界
376
+
377
+
378
+
379
379
  </span>
380
-
381
-
380
+
381
+
382
382
 
383
383
  </a>
384
384
  </li>
385
-
386
-
387
-
388
-
389
-
390
-
391
-
392
-
393
-
385
+
386
+
387
+
388
+
389
+
390
+
391
+
392
+
393
+
394
394
  <li class="md-nav__item">
395
395
  <a href="../public/status/" class="md-nav__link">
396
-
397
-
398
-
396
+
397
+
398
+
399
399
  <span class="md-ellipsis">
400
-
401
-
402
- 公开状态
403
-
404
400
 
405
-
401
+
402
+ 中文 · 公开状态
403
+
404
+
405
+
406
406
  </span>
407
-
408
-
407
+
408
+
409
409
 
410
410
  </a>
411
411
  </li>
412
-
413
-
414
-
415
-
416
-
417
-
418
-
419
-
420
-
421
-
422
-
412
+
413
+
414
+
415
+
416
+
417
+
418
+
419
+
420
+
421
+
422
+
423
423
  <li class="md-nav__item md-nav__item--active">
424
-
424
+
425
425
  <input class="md-nav__toggle md-toggle" type="checkbox" id="__toc">
426
-
427
-
428
-
429
-
430
-
431
- <label class="md-nav__link md-nav__link--active" for="__toc">
432
-
433
-
434
-
435
- <span class="md-ellipsis">
436
-
437
-
438
- 存量采用与迁移
439
-
440
426
 
441
-
442
- </span>
443
-
444
-
445
427
 
446
- <span class="md-nav__icon md-icon"></span>
447
- </label>
448
-
449
- <a href="./" class="md-nav__link md-nav__link--active">
450
-
451
-
452
-
453
- <span class="md-ellipsis">
454
-
455
-
456
- 存量采用与迁移
457
-
458
428
 
459
-
460
- </span>
461
-
462
-
463
429
 
464
- </a>
465
-
466
-
467
430
 
468
- <nav class="md-nav md-nav--secondary" aria-label="目录">
469
-
470
-
471
-
472
-
473
-
474
-
475
- <label class="md-nav__title" for="__toc">
431
+ <label class="md-nav__link md-nav__link--active" for="__toc">
432
+
433
+
434
+
435
+ <span class="md-ellipsis">
436
+
437
+
438
+ 中文 · 存量采用与迁移
439
+
440
+
441
+
442
+ </span>
443
+
444
+
445
+
446
+ <span class="md-nav__icon md-icon"></span>
447
+ </label>
448
+
449
+ <a href="./" class="md-nav__link md-nav__link--active">
450
+
451
+
452
+
453
+ <span class="md-ellipsis">
454
+
455
+
456
+ 中文 · 存量采用与迁移
457
+
458
+
459
+
460
+ </span>
461
+
462
+
463
+
464
+ </a>
465
+
466
+
467
+
468
+ <nav class="md-nav md-nav--secondary" aria-label="目录">
469
+
470
+
471
+
472
+
473
+
474
+
475
+ <label class="md-nav__title" for="__toc">
476
476
  <span class="md-nav__icon md-icon"></span>
477
477
  目录
478
478
  </label>
479
479
  <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
480
-
480
+
481
+ <li class="md-nav__item">
482
+ <a href="#分类方法" class="md-nav__link">
483
+ <span class="md-ellipsis">
484
+
485
+ 分类方法
486
+
487
+ </span>
488
+ </a>
489
+
490
+ </li>
491
+
481
492
  <li class="md-nav__item">
482
493
  <a href="#原则" class="md-nav__link">
483
494
  <span class="md-ellipsis">
484
-
495
+
485
496
  原则
486
-
497
+
487
498
  </span>
488
499
  </a>
489
-
500
+
490
501
  </li>
491
-
502
+
492
503
  <li class="md-nav__item">
493
504
  <a href="#adopt-plan-输出结构" class="md-nav__link">
494
505
  <span class="md-ellipsis">
495
-
506
+
496
507
  adopt-plan 输出结构
497
-
508
+
498
509
  </span>
499
510
  </a>
500
-
511
+
501
512
  </li>
502
-
513
+
503
514
  <li class="md-nav__item">
504
515
  <a href="#迁移清单skill-familymigrationjson" class="md-nav__link">
505
516
  <span class="md-ellipsis">
506
-
517
+
507
518
  迁移清单(skill-family.migration.json)
508
-
519
+
509
520
  </span>
510
521
  </a>
511
-
522
+
512
523
  </li>
513
-
524
+
514
525
  <li class="md-nav__item">
515
526
  <a href="#迁移状态机" class="md-nav__link">
516
527
  <span class="md-ellipsis">
517
-
528
+
518
529
  迁移状态机
519
-
530
+
520
531
  </span>
521
532
  </a>
522
-
533
+
523
534
  </li>
524
-
535
+
525
536
  <li class="md-nav__item">
526
537
  <a href="#完成判定门禁" class="md-nav__link">
527
538
  <span class="md-ellipsis">
528
-
539
+
529
540
  完成判定门禁
530
-
541
+
531
542
  </span>
532
543
  </a>
533
-
544
+
534
545
  <nav class="md-nav" aria-label="完成判定门禁">
535
546
  <ul class="md-nav__list">
536
-
547
+
537
548
  <li class="md-nav__item">
538
549
  <a href="#强制负例任一场景-completion-必须为-false" class="md-nav__link">
539
550
  <span class="md-ellipsis">
540
-
551
+
541
552
  强制负例(任一场景 completion 必须为 false)
542
-
553
+
543
554
  </span>
544
555
  </a>
545
-
556
+
546
557
  </li>
547
-
558
+
548
559
  </ul>
549
560
  </nav>
550
-
561
+
562
+ </li>
563
+
564
+ <li class="md-nav__item">
565
+ <a href="#旧实现删除与回滚合同" class="md-nav__link">
566
+ <span class="md-ellipsis">
567
+
568
+ 旧实现删除与回滚合同
569
+
570
+ </span>
571
+ </a>
572
+
551
573
  </li>
552
-
574
+
553
575
  <li class="md-nav__item">
554
576
  <a href="#十字段-hand-off-草案" class="md-nav__link">
555
577
  <span class="md-ellipsis">
556
-
578
+
557
579
  十字段 hand-off 草案
558
-
580
+
559
581
  </span>
560
582
  </a>
561
-
583
+
562
584
  <nav class="md-nav" aria-label="十字段 hand-off 草案">
563
585
  <ul class="md-nav__list">
564
-
586
+
565
587
  <li class="md-nav__item">
566
588
  <a href="#INCOMPLETE-阻断规则" class="md-nav__link">
567
589
  <span class="md-ellipsis">
568
-
590
+
569
591
  INCOMPLETE 阻断规则
570
-
592
+
571
593
  </span>
572
594
  </a>
573
-
595
+
574
596
  </li>
575
-
597
+
576
598
  <li class="md-nav__item">
577
599
  <a href="#绑定" class="md-nav__link">
578
600
  <span class="md-ellipsis">
579
-
601
+
580
602
  绑定
581
-
603
+
582
604
  </span>
583
605
  </a>
584
-
606
+
585
607
  </li>
586
-
608
+
587
609
  <li class="md-nav__item">
588
610
  <a href="#渲染边界" class="md-nav__link">
589
611
  <span class="md-ellipsis">
590
-
612
+
591
613
  渲染边界
592
-
614
+
593
615
  </span>
594
616
  </a>
595
-
617
+
596
618
  </li>
597
-
619
+
598
620
  </ul>
599
621
  </nav>
600
-
622
+
601
623
  </li>
602
-
624
+
603
625
  <li class="md-nav__item">
604
626
  <a href="#危害类-fixture" class="md-nav__link">
605
627
  <span class="md-ellipsis">
606
-
628
+
607
629
  危害类 fixture
608
-
630
+
609
631
  </span>
610
632
  </a>
611
-
633
+
612
634
  </li>
613
-
635
+
614
636
  </ul>
615
-
637
+
616
638
  </nav>
617
-
639
+
640
+ </li>
641
+
642
+
643
+
644
+
645
+
646
+
647
+
648
+
649
+
650
+ <li class="md-nav__item">
651
+ <a href="../licensing/" class="md-nav__link">
652
+
653
+
654
+
655
+ <span class="md-ellipsis">
656
+
657
+
658
+ 中文 · 许可与署名
659
+
660
+
661
+
662
+ </span>
663
+
664
+
665
+
666
+ </a>
667
+ </li>
668
+
669
+
670
+
671
+
672
+
673
+
674
+
675
+
676
+
677
+ <li class="md-nav__item">
678
+ <a href="../agents/" class="md-nav__link">
679
+
680
+
681
+
682
+ <span class="md-ellipsis">
683
+
684
+
685
+ 中文 · 智能体入口
686
+
687
+
688
+
689
+ </span>
690
+
691
+
692
+
693
+ </a>
694
+ </li>
695
+
696
+
697
+
698
+
699
+
700
+
701
+
702
+
703
+
704
+ <li class="md-nav__item">
705
+ <a href="../agents/architecture-routing/" class="md-nav__link">
706
+
707
+
708
+
709
+ <span class="md-ellipsis">
710
+
711
+
712
+ 中文 · 架构路由
713
+
714
+
715
+
716
+ </span>
717
+
718
+
719
+
720
+ </a>
721
+ </li>
722
+
723
+
724
+
725
+
726
+
727
+
728
+
729
+
730
+
731
+ <li class="md-nav__item">
732
+ <a href="../reference/compatibility/" class="md-nav__link">
733
+
734
+
735
+
736
+ <span class="md-ellipsis">
737
+
738
+
739
+ 中文 · 兼容性
740
+
741
+
742
+
743
+ </span>
744
+
745
+
746
+
747
+ </a>
748
+ </li>
749
+
750
+
751
+
752
+
753
+
754
+
755
+
756
+
757
+
758
+ <li class="md-nav__item">
759
+ <a href="../reference/failure-and-side-effect-matrix/" class="md-nav__link">
760
+
761
+
762
+
763
+ <span class="md-ellipsis">
764
+
765
+
766
+ 中文 · 失败与副作用
767
+
768
+
769
+
770
+ </span>
771
+
772
+
773
+
774
+ </a>
775
+ </li>
776
+
777
+
778
+
779
+
780
+
781
+
782
+
783
+
784
+
785
+ <li class="md-nav__item">
786
+ <a href="../reference/api/" class="md-nav__link">
787
+
788
+
789
+
790
+ <span class="md-ellipsis">
791
+
792
+
793
+ 中文 · API 参考
794
+
795
+
796
+
797
+ </span>
798
+
799
+
800
+
801
+ </a>
802
+ </li>
803
+
804
+
805
+
806
+
807
+
808
+
809
+
810
+
811
+
812
+ <li class="md-nav__item">
813
+ <a href="../reference/api/contracts/" class="md-nav__link">
814
+
815
+
816
+
817
+ <span class="md-ellipsis">
818
+
819
+
820
+ 中文 · Contracts API
821
+
822
+
823
+
824
+ </span>
825
+
826
+
827
+
828
+ </a>
829
+ </li>
830
+
831
+
832
+
833
+
834
+
835
+
836
+
837
+
838
+
839
+ <li class="md-nav__item">
840
+ <a href="../reference/api/harness/" class="md-nav__link">
841
+
842
+
843
+
844
+ <span class="md-ellipsis">
845
+
846
+
847
+ 中文 · Harness API
848
+
849
+
850
+
851
+ </span>
852
+
853
+
854
+
855
+ </a>
856
+ </li>
857
+
858
+
859
+
860
+
861
+
862
+
863
+
864
+
865
+
866
+ <li class="md-nav__item">
867
+ <a href="../reference/api/engineering-kit/" class="md-nav__link">
868
+
869
+
870
+
871
+ <span class="md-ellipsis">
872
+
873
+
874
+ 中文 · Engineering Kit API
875
+
876
+
877
+
878
+ </span>
879
+
880
+
881
+
882
+ </a>
883
+ </li>
884
+
885
+
886
+
887
+
888
+
889
+
890
+
891
+
892
+
893
+ <li class="md-nav__item">
894
+ <a href="../examples-and-fixtures/" class="md-nav__link">
895
+
896
+
897
+
898
+ <span class="md-ellipsis">
899
+
900
+
901
+ 中文 · 样例与 Fixture
902
+
903
+
904
+
905
+ </span>
906
+
907
+
908
+
909
+ </a>
910
+ </li>
911
+
912
+
913
+
914
+
915
+
916
+
917
+
918
+
919
+
920
+ <li class="md-nav__item">
921
+ <a href="../recipes/" class="md-nav__link">
922
+
923
+
924
+
925
+ <span class="md-ellipsis">
926
+
927
+
928
+ 中文 · Recipes
929
+
930
+
931
+
932
+ </span>
933
+
934
+
935
+
936
+ </a>
937
+ </li>
938
+
939
+
940
+
941
+
942
+
943
+
944
+
945
+
946
+
947
+ <li class="md-nav__item">
948
+ <a href="../recipes/adopt-existing-repository/" class="md-nav__link">
949
+
950
+
951
+
952
+ <span class="md-ellipsis">
953
+
954
+
955
+ 中文 · 采用存量仓库
956
+
957
+
958
+
959
+ </span>
960
+
961
+
962
+
963
+ </a>
964
+ </li>
965
+
966
+
967
+
968
+
969
+
970
+
971
+
972
+
973
+
974
+ <li class="md-nav__item">
975
+ <a href="../recipes/safe-filesystem-and-atomic-write/" class="md-nav__link">
976
+
977
+
978
+
979
+ <span class="md-ellipsis">
980
+
981
+
982
+ 中文 · 安全文件系统与原子写
983
+
984
+
985
+
986
+ </span>
987
+
988
+
989
+
990
+ </a>
991
+ </li>
992
+
993
+
994
+
995
+
996
+
997
+
998
+
999
+
1000
+
1001
+ <li class="md-nav__item">
1002
+ <a href="../recipes/adapter-text-closure/" class="md-nav__link">
1003
+
1004
+
1005
+
1006
+ <span class="md-ellipsis">
1007
+
1008
+
1009
+ 中文 · Adapter 文本闭包
1010
+
1011
+
1012
+
1013
+ </span>
1014
+
1015
+
1016
+
1017
+ </a>
1018
+ </li>
1019
+
1020
+
1021
+
1022
+
1023
+
1024
+
1025
+
1026
+
1027
+
1028
+ <li class="md-nav__item">
1029
+ <a href="../recipes/deterministic-human-report/" class="md-nav__link">
1030
+
1031
+
1032
+
1033
+ <span class="md-ellipsis">
1034
+
1035
+
1036
+ 中文 · 确定性人类报告
1037
+
1038
+
1039
+
1040
+ </span>
1041
+
1042
+
1043
+
1044
+ </a>
1045
+ </li>
1046
+
1047
+
1048
+
1049
+
1050
+
1051
+
1052
+
1053
+
1054
+
1055
+ <li class="md-nav__item">
1056
+ <a href="../recipes/durable-local-state/" class="md-nav__link">
1057
+
1058
+
1059
+
1060
+ <span class="md-ellipsis">
1061
+
1062
+
1063
+ 中文 · 持久本地状态
1064
+
1065
+
1066
+
1067
+ </span>
1068
+
1069
+
1070
+
1071
+ </a>
1072
+ </li>
1073
+
1074
+
1075
+
1076
+
1077
+
1078
+
1079
+
1080
+
1081
+
1082
+ <li class="md-nav__item">
1083
+ <a href="../recipes/host-profile-integration/" class="md-nav__link">
1084
+
1085
+
1086
+
1087
+ <span class="md-ellipsis">
1088
+
1089
+
1090
+ 中文 · 宿主 Profile 集成
1091
+
1092
+
1093
+
1094
+ </span>
1095
+
1096
+
1097
+
1098
+ </a>
1099
+ </li>
1100
+
1101
+
1102
+
1103
+
1104
+
1105
+
1106
+
1107
+
1108
+
1109
+ <li class="md-nav__item">
1110
+ <a href="../recipes/domain-schema-validation/" class="md-nav__link">
1111
+
1112
+
1113
+
1114
+ <span class="md-ellipsis">
1115
+
1116
+
1117
+ 中文 · 领域 Schema 校验
1118
+
1119
+
1120
+
1121
+ </span>
1122
+
1123
+
1124
+
1125
+ </a>
1126
+ </li>
1127
+
1128
+
1129
+
1130
+
1131
+
1132
+
1133
+
1134
+
1135
+
1136
+ <li class="md-nav__item">
1137
+ <a href="../en/" class="md-nav__link">
1138
+
1139
+
1140
+
1141
+ <span class="md-ellipsis">
1142
+
1143
+
1144
+ English · Home
1145
+
1146
+
1147
+
1148
+ </span>
1149
+
1150
+
1151
+
1152
+ </a>
1153
+ </li>
1154
+
1155
+
1156
+
1157
+
1158
+
1159
+
1160
+
1161
+
1162
+
1163
+ <li class="md-nav__item">
1164
+ <a href="../en/quickstart/" class="md-nav__link">
1165
+
1166
+
1167
+
1168
+ <span class="md-ellipsis">
1169
+
1170
+
1171
+ English · Quickstart
1172
+
1173
+
1174
+
1175
+ </span>
1176
+
1177
+
1178
+
1179
+ </a>
1180
+ </li>
1181
+
1182
+
1183
+
1184
+
1185
+
1186
+
1187
+
1188
+
1189
+
1190
+ <li class="md-nav__item">
1191
+ <a href="../en/help/" class="md-nav__link">
1192
+
1193
+
1194
+
1195
+ <span class="md-ellipsis">
1196
+
1197
+
1198
+ English · Capabilities and diagnostics
1199
+
1200
+
1201
+
1202
+ </span>
1203
+
1204
+
1205
+
1206
+ </a>
1207
+ </li>
1208
+
1209
+
1210
+
1211
+
1212
+
1213
+
1214
+
1215
+
1216
+
1217
+ <li class="md-nav__item">
1218
+ <a href="../en/architecture/" class="md-nav__link">
1219
+
1220
+
1221
+
1222
+ <span class="md-ellipsis">
1223
+
1224
+
1225
+ English · Architecture
1226
+
1227
+
1228
+
1229
+ </span>
1230
+
1231
+
1232
+
1233
+ </a>
1234
+ </li>
1235
+
1236
+
1237
+
1238
+
1239
+
1240
+
1241
+
1242
+
1243
+
1244
+ <li class="md-nav__item">
1245
+ <a href="../en/migration/" class="md-nav__link">
1246
+
1247
+
1248
+
1249
+ <span class="md-ellipsis">
1250
+
1251
+
1252
+ English · Migration
1253
+
1254
+
1255
+
1256
+ </span>
1257
+
1258
+
1259
+
1260
+ </a>
1261
+ </li>
1262
+
1263
+
1264
+
1265
+
1266
+
1267
+
1268
+
1269
+
1270
+
1271
+ <li class="md-nav__item">
1272
+ <a href="../en/licensing/" class="md-nav__link">
1273
+
1274
+
1275
+
1276
+ <span class="md-ellipsis">
1277
+
1278
+
1279
+ English · Licensing
1280
+
1281
+
1282
+
1283
+ </span>
1284
+
1285
+
1286
+
1287
+ </a>
1288
+ </li>
1289
+
1290
+
1291
+
1292
+
1293
+
1294
+
1295
+
1296
+
1297
+
1298
+ <li class="md-nav__item">
1299
+ <a href="../en/agents/" class="md-nav__link">
1300
+
1301
+
1302
+
1303
+ <span class="md-ellipsis">
1304
+
1305
+
1306
+ English · Agent entry
1307
+
1308
+
1309
+
1310
+ </span>
1311
+
1312
+
1313
+
1314
+ </a>
1315
+ </li>
1316
+
1317
+
1318
+
1319
+
1320
+
1321
+
1322
+
1323
+
1324
+
1325
+ <li class="md-nav__item">
1326
+ <a href="../en/agents/architecture-routing/" class="md-nav__link">
1327
+
1328
+
1329
+
1330
+ <span class="md-ellipsis">
1331
+
1332
+
1333
+ English · Architecture routing
1334
+
1335
+
1336
+
1337
+ </span>
1338
+
1339
+
1340
+
1341
+ </a>
1342
+ </li>
1343
+
1344
+
1345
+
1346
+
1347
+
1348
+
1349
+
1350
+
1351
+
1352
+ <li class="md-nav__item">
1353
+ <a href="../en/reference/compatibility/" class="md-nav__link">
1354
+
1355
+
1356
+
1357
+ <span class="md-ellipsis">
1358
+
1359
+
1360
+ English · Compatibility
1361
+
1362
+
1363
+
1364
+ </span>
1365
+
1366
+
1367
+
1368
+ </a>
1369
+ </li>
1370
+
1371
+
1372
+
1373
+
1374
+
1375
+
1376
+
1377
+
1378
+
1379
+ <li class="md-nav__item">
1380
+ <a href="../en/reference/failure-and-side-effect-matrix/" class="md-nav__link">
1381
+
1382
+
1383
+
1384
+ <span class="md-ellipsis">
1385
+
1386
+
1387
+ English · Failures and side effects
1388
+
1389
+
1390
+
1391
+ </span>
1392
+
1393
+
1394
+
1395
+ </a>
1396
+ </li>
1397
+
1398
+
1399
+
1400
+
1401
+
1402
+
1403
+
1404
+
1405
+
1406
+ <li class="md-nav__item">
1407
+ <a href="../en/reference/api/" class="md-nav__link">
1408
+
1409
+
1410
+
1411
+ <span class="md-ellipsis">
1412
+
1413
+
1414
+ English · API reference
1415
+
1416
+
1417
+
1418
+ </span>
1419
+
1420
+
1421
+
1422
+ </a>
1423
+ </li>
1424
+
1425
+
1426
+
1427
+
1428
+
1429
+
1430
+
1431
+
1432
+
1433
+ <li class="md-nav__item">
1434
+ <a href="../en/examples-and-fixtures/" class="md-nav__link">
1435
+
1436
+
1437
+
1438
+ <span class="md-ellipsis">
1439
+
1440
+
1441
+ English · Examples and fixtures
1442
+
1443
+
1444
+
1445
+ </span>
1446
+
1447
+
1448
+
1449
+ </a>
1450
+ </li>
1451
+
1452
+
1453
+
1454
+
1455
+
1456
+
1457
+
1458
+
1459
+
1460
+ <li class="md-nav__item">
1461
+ <a href="../en/recipes/" class="md-nav__link">
1462
+
1463
+
1464
+
1465
+ <span class="md-ellipsis">
1466
+
1467
+
1468
+ English · Recipes
1469
+
1470
+
1471
+
1472
+ </span>
1473
+
1474
+
1475
+
1476
+ </a>
1477
+ </li>
1478
+
1479
+
1480
+
1481
+
1482
+
1483
+
1484
+
1485
+
1486
+
1487
+ <li class="md-nav__item">
1488
+ <a href="../en/recipes/adopt-existing-repository/" class="md-nav__link">
1489
+
1490
+
1491
+
1492
+ <span class="md-ellipsis">
1493
+
1494
+
1495
+ English · Adopt an existing repository
1496
+
1497
+
1498
+
1499
+ </span>
1500
+
1501
+
1502
+
1503
+ </a>
1504
+ </li>
1505
+
1506
+
1507
+
1508
+
1509
+
1510
+
1511
+
1512
+
1513
+
1514
+ <li class="md-nav__item">
1515
+ <a href="../en/recipes/safe-filesystem-and-atomic-write/" class="md-nav__link">
1516
+
1517
+
1518
+
1519
+ <span class="md-ellipsis">
1520
+
1521
+
1522
+ English · Safe filesystem and atomic write
1523
+
1524
+
1525
+
1526
+ </span>
1527
+
1528
+
1529
+
1530
+ </a>
1531
+ </li>
1532
+
1533
+
1534
+
1535
+
1536
+
1537
+
1538
+
1539
+
1540
+
1541
+ <li class="md-nav__item">
1542
+ <a href="../en/recipes/adapter-text-closure/" class="md-nav__link">
1543
+
1544
+
1545
+
1546
+ <span class="md-ellipsis">
1547
+
1548
+
1549
+ English · Adapter text closure
1550
+
1551
+
1552
+
1553
+ </span>
1554
+
1555
+
1556
+
1557
+ </a>
1558
+ </li>
1559
+
1560
+
1561
+
1562
+
1563
+
1564
+
1565
+
1566
+
1567
+
1568
+ <li class="md-nav__item">
1569
+ <a href="../en/recipes/deterministic-human-report/" class="md-nav__link">
1570
+
1571
+
1572
+
1573
+ <span class="md-ellipsis">
1574
+
1575
+
1576
+ English · Deterministic human report
1577
+
1578
+
1579
+
1580
+ </span>
1581
+
1582
+
1583
+
1584
+ </a>
1585
+ </li>
1586
+
1587
+
1588
+
1589
+
1590
+
1591
+
1592
+
1593
+
1594
+
1595
+ <li class="md-nav__item">
1596
+ <a href="../en/recipes/durable-local-state/" class="md-nav__link">
1597
+
1598
+
1599
+
1600
+ <span class="md-ellipsis">
1601
+
1602
+
1603
+ English · Durable local state
1604
+
1605
+
1606
+
1607
+ </span>
1608
+
1609
+
1610
+
1611
+ </a>
1612
+ </li>
1613
+
1614
+
1615
+
1616
+
1617
+
1618
+
1619
+
1620
+
1621
+
1622
+ <li class="md-nav__item">
1623
+ <a href="../en/recipes/host-profile-integration/" class="md-nav__link">
1624
+
1625
+
1626
+
1627
+ <span class="md-ellipsis">
1628
+
1629
+
1630
+ English · Host Profile integration
1631
+
1632
+
1633
+
1634
+ </span>
1635
+
1636
+
1637
+
1638
+ </a>
1639
+ </li>
1640
+
1641
+
1642
+
1643
+
1644
+
1645
+
1646
+
1647
+
1648
+
1649
+ <li class="md-nav__item">
1650
+ <a href="../en/recipes/domain-schema-validation/" class="md-nav__link">
1651
+
1652
+
1653
+
1654
+ <span class="md-ellipsis">
1655
+
1656
+
1657
+ English · Domain Schema validation
1658
+
1659
+
1660
+
1661
+ </span>
1662
+
1663
+
1664
+
1665
+ </a>
618
1666
  </li>
619
-
620
-
621
-
622
-
623
-
624
-
625
-
626
-
627
-
1667
+
1668
+
1669
+
1670
+
1671
+
1672
+
1673
+
1674
+
1675
+
628
1676
  <li class="md-nav__item">
629
1677
  <a href="../integration/audit/" class="md-nav__link">
630
-
631
-
632
-
1678
+
1679
+
1680
+
633
1681
  <span class="md-ellipsis">
634
-
635
-
636
- 独立审计集成
637
-
638
1682
 
639
-
1683
+
1684
+ 审计集成 · 入口
1685
+
1686
+
1687
+
640
1688
  </span>
641
-
642
-
1689
+
1690
+
643
1691
 
644
1692
  </a>
645
1693
  </li>
646
-
647
-
648
-
649
-
650
-
651
-
652
-
653
-
654
-
1694
+
1695
+
1696
+
1697
+
1698
+
1699
+
1700
+
1701
+
1702
+
655
1703
  <li class="md-nav__item">
656
1704
  <a href="../integration/audit/mutation-taxonomy/" class="md-nav__link">
657
-
658
-
659
-
1705
+
1706
+
1707
+
660
1708
  <span class="md-ellipsis">
661
-
662
-
663
- 审计变异分类学
664
-
665
1709
 
666
-
1710
+
1711
+ 审计集成 · 变异分类学
1712
+
1713
+
1714
+
667
1715
  </span>
668
-
669
-
1716
+
1717
+
670
1718
 
671
1719
  </a>
672
1720
  </li>
673
-
674
-
675
-
676
-
677
-
678
-
679
-
680
-
681
-
1721
+
1722
+
1723
+
1724
+
1725
+
1726
+
1727
+
1728
+
1729
+
682
1730
  <li class="md-nav__item">
683
1731
  <a href="../integration/audit/independence/" class="md-nav__link">
684
-
685
-
686
-
1732
+
1733
+
1734
+
687
1735
  <span class="md-ellipsis">
688
-
689
-
690
- 审计独立性证明
691
-
692
1736
 
693
-
1737
+
1738
+ 审计集成 · 独立性证明
1739
+
1740
+
1741
+
694
1742
  </span>
695
-
696
-
1743
+
1744
+
697
1745
 
698
1746
  </a>
699
1747
  </li>
700
-
701
-
702
-
703
-
704
-
705
-
706
-
707
-
708
-
1748
+
1749
+
1750
+
1751
+
1752
+
1753
+
1754
+
1755
+
1756
+
709
1757
  <li class="md-nav__item">
710
1758
  <a href="../integration/audit/version-compatibility/" class="md-nav__link">
711
-
712
-
713
-
1759
+
1760
+
1761
+
714
1762
  <span class="md-ellipsis">
715
-
716
-
717
- 审计版本兼容定义
718
-
719
1763
 
720
-
1764
+
1765
+ 审计集成 · 版本兼容
1766
+
1767
+
1768
+
721
1769
  </span>
722
-
723
-
1770
+
1771
+
724
1772
 
725
1773
  </a>
726
1774
  </li>
727
-
728
-
729
-
730
-
731
-
732
-
733
-
734
-
735
-
1775
+
1776
+
1777
+
1778
+
1779
+
1780
+
1781
+
1782
+
1783
+
736
1784
  <li class="md-nav__item">
737
1785
  <a href="../integration/audit/failure-evidence/" class="md-nav__link">
738
-
739
-
740
-
1786
+
1787
+
1788
+
741
1789
  <span class="md-ellipsis">
742
-
743
-
744
- 审计失败证据与 AUD 码
745
-
746
1790
 
747
-
1791
+
1792
+ 审计集成 · 失败证据与 AUD 码
1793
+
1794
+
1795
+
748
1796
  </span>
749
-
750
-
1797
+
1798
+
751
1799
 
752
1800
  </a>
753
1801
  </li>
754
-
755
1802
 
756
-
1803
+
1804
+
757
1805
  </ul>
758
1806
  </nav>
759
1807
  </div>
760
1808
  </div>
761
1809
  </div>
762
-
763
-
764
-
1810
+
1811
+
1812
+
765
1813
  <div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" >
766
1814
  <div class="md-sidebar__scrollwrap">
767
1815
  <div class="md-sidebar__inner">
768
-
1816
+
769
1817
 
770
1818
  <nav class="md-nav md-nav--secondary" aria-label="目录">
771
-
772
-
773
-
774
-
775
-
776
-
1819
+
1820
+
1821
+
1822
+
1823
+
1824
+
777
1825
  <label class="md-nav__title" for="__toc">
778
1826
  <span class="md-nav__icon md-icon"></span>
779
1827
  目录
780
1828
  </label>
781
1829
  <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
782
-
1830
+
1831
+ <li class="md-nav__item">
1832
+ <a href="#分类方法" class="md-nav__link">
1833
+ <span class="md-ellipsis">
1834
+
1835
+ 分类方法
1836
+
1837
+ </span>
1838
+ </a>
1839
+
1840
+ </li>
1841
+
783
1842
  <li class="md-nav__item">
784
1843
  <a href="#原则" class="md-nav__link">
785
1844
  <span class="md-ellipsis">
786
-
1845
+
787
1846
  原则
788
-
1847
+
789
1848
  </span>
790
1849
  </a>
791
-
1850
+
792
1851
  </li>
793
-
1852
+
794
1853
  <li class="md-nav__item">
795
1854
  <a href="#adopt-plan-输出结构" class="md-nav__link">
796
1855
  <span class="md-ellipsis">
797
-
1856
+
798
1857
  adopt-plan 输出结构
799
-
1858
+
800
1859
  </span>
801
1860
  </a>
802
-
1861
+
803
1862
  </li>
804
-
1863
+
805
1864
  <li class="md-nav__item">
806
1865
  <a href="#迁移清单skill-familymigrationjson" class="md-nav__link">
807
1866
  <span class="md-ellipsis">
808
-
1867
+
809
1868
  迁移清单(skill-family.migration.json)
810
-
1869
+
811
1870
  </span>
812
1871
  </a>
813
-
1872
+
814
1873
  </li>
815
-
1874
+
816
1875
  <li class="md-nav__item">
817
1876
  <a href="#迁移状态机" class="md-nav__link">
818
1877
  <span class="md-ellipsis">
819
-
1878
+
820
1879
  迁移状态机
821
-
1880
+
822
1881
  </span>
823
1882
  </a>
824
-
1883
+
825
1884
  </li>
826
-
1885
+
827
1886
  <li class="md-nav__item">
828
1887
  <a href="#完成判定门禁" class="md-nav__link">
829
1888
  <span class="md-ellipsis">
830
-
1889
+
831
1890
  完成判定门禁
832
-
1891
+
833
1892
  </span>
834
1893
  </a>
835
-
1894
+
836
1895
  <nav class="md-nav" aria-label="完成判定门禁">
837
1896
  <ul class="md-nav__list">
838
-
1897
+
839
1898
  <li class="md-nav__item">
840
1899
  <a href="#强制负例任一场景-completion-必须为-false" class="md-nav__link">
841
1900
  <span class="md-ellipsis">
842
-
1901
+
843
1902
  强制负例(任一场景 completion 必须为 false)
844
-
1903
+
845
1904
  </span>
846
1905
  </a>
847
-
1906
+
848
1907
  </li>
849
-
1908
+
850
1909
  </ul>
851
1910
  </nav>
852
-
1911
+
1912
+ </li>
1913
+
1914
+ <li class="md-nav__item">
1915
+ <a href="#旧实现删除与回滚合同" class="md-nav__link">
1916
+ <span class="md-ellipsis">
1917
+
1918
+ 旧实现删除与回滚合同
1919
+
1920
+ </span>
1921
+ </a>
1922
+
853
1923
  </li>
854
-
1924
+
855
1925
  <li class="md-nav__item">
856
1926
  <a href="#十字段-hand-off-草案" class="md-nav__link">
857
1927
  <span class="md-ellipsis">
858
-
1928
+
859
1929
  十字段 hand-off 草案
860
-
1930
+
861
1931
  </span>
862
1932
  </a>
863
-
1933
+
864
1934
  <nav class="md-nav" aria-label="十字段 hand-off 草案">
865
1935
  <ul class="md-nav__list">
866
-
1936
+
867
1937
  <li class="md-nav__item">
868
1938
  <a href="#INCOMPLETE-阻断规则" class="md-nav__link">
869
1939
  <span class="md-ellipsis">
870
-
1940
+
871
1941
  INCOMPLETE 阻断规则
872
-
1942
+
873
1943
  </span>
874
1944
  </a>
875
-
1945
+
876
1946
  </li>
877
-
1947
+
878
1948
  <li class="md-nav__item">
879
1949
  <a href="#绑定" class="md-nav__link">
880
1950
  <span class="md-ellipsis">
881
-
1951
+
882
1952
  绑定
883
-
1953
+
884
1954
  </span>
885
1955
  </a>
886
-
1956
+
887
1957
  </li>
888
-
1958
+
889
1959
  <li class="md-nav__item">
890
1960
  <a href="#渲染边界" class="md-nav__link">
891
1961
  <span class="md-ellipsis">
892
-
1962
+
893
1963
  渲染边界
894
-
1964
+
895
1965
  </span>
896
1966
  </a>
897
-
1967
+
898
1968
  </li>
899
-
1969
+
900
1970
  </ul>
901
1971
  </nav>
902
-
1972
+
903
1973
  </li>
904
-
1974
+
905
1975
  <li class="md-nav__item">
906
1976
  <a href="#危害类-fixture" class="md-nav__link">
907
1977
  <span class="md-ellipsis">
908
-
1978
+
909
1979
  危害类 fixture
910
-
1980
+
911
1981
  </span>
912
1982
  </a>
913
-
1983
+
914
1984
  </li>
915
-
1985
+
916
1986
  </ul>
917
-
1987
+
918
1988
  </nav>
919
1989
  </div>
920
1990
  </div>
921
1991
  </div>
922
-
923
-
924
-
1992
+
1993
+
1994
+
925
1995
  <div class="md-content" data-md-component="content">
926
-
1996
+
927
1997
  <article class="md-content__inner md-typeset">
928
-
929
-
930
1998
 
931
1999
 
932
2000
 
2001
+
2002
+
2003
+ <blockquote>
2004
+ <p><a href="../en/migration/">English</a></p>
2005
+ </blockquote>
933
2006
  <h1 id="存量采用与迁移FND-070">存量采用与迁移(FND-070)<a class="headerlink" href="#存量采用与迁移FND-070" title="Permanent link">&para;</a></h1>
934
- <p>本页描述存量项目如何采用 Skill Family 基础设施,以及迁移完成判定的门禁。</p>
2007
+ <p>本页描述存量项目如何采用 Skill Family 基础设施,以及迁移完成判定的门禁。它服务于两类读者:人类负责人据此判断采用路径与风险;智能体据此用 <code>adopt-plan</code> 做只读盘点,不在本页复制写入动作。</p>
2008
+ <h2 id="分类方法">分类方法<a class="headerlink" href="#分类方法" title="Permanent link">&para;</a></h2>
2009
+ <p>存量仓接入 Foundation 前,先按下面四类归类。分类决定走哪条路径、是否写文件、旧实现如何处理。</p>
2010
+ <table>
2011
+ <thead>
2012
+ <tr>
2013
+ <th>类别</th>
2014
+ <th>含义</th>
2015
+ <th>处理路径</th>
2016
+ <th>是否写文件</th>
2017
+ </tr>
2018
+ </thead>
2019
+ <tbody>
2020
+ <tr>
2021
+ <td><code>direct-adoption</code></td>
2022
+ <td>仓内已有能力可被 Foundation 原样替代,无业务语义耦合</td>
2023
+ <td>直接采用:<code>adopt-plan</code> 盘点 → <code>scaffold</code>/<code>projection</code> 落盘</td>
2024
+ <td>是(受收容)</td>
2025
+ </tr>
2026
+ <tr>
2027
+ <td><code>compatibility-layer</code></td>
2028
+ <td>仓内已有实现与 Foundation 接口存在差异,需一层兼容适配</td>
2029
+ <td>写兼容层后采用,旧实现经兼容层退出</td>
2030
+ <td>是(兼容层受收容)</td>
2031
+ </tr>
2032
+ <tr>
2033
+ <td><code>keep-business</code></td>
2034
+ <td>能力含领域语义或业务状态机,属于调用方拥有,Foundation 不接</td>
2035
+ <td>留在消费者,只接业务中立机制</td>
2036
+ <td>否(Foundation 侧)</td>
2037
+ </tr>
2038
+ <tr>
2039
+ <td><code>foundation-gap</code></td>
2040
+ <td>需要的能力 Foundation 尚未提供(如 host apply、Qoder driver)</td>
2041
+ <td>留在消费者或后续版本,不强行扩张 Foundation</td>
2042
+ <td>否</td>
2043
+ </tr>
2044
+ </tbody>
2045
+ </table>
2046
+ <blockquote>
2047
+ <p>分类是采用决策的前提。落入 <code>keep-business</code> 或 <code>foundation-gap</code> 的能力,不应为了「完成采用」而塞进 Foundation;这正好是架构路由第 1、8 步的落地。</p>
2048
+ </blockquote>
935
2049
  <h2 id="原则">原则<a class="headerlink" href="#原则" title="Permanent link">&para;</a></h2>
936
2050
  <ol>
937
- <li><strong>计划先行</strong>:任何存量仓先运行只读 <code>adopt-plan</code>,拿到现状、目标 Profile、
938
- 精确写集、冲突、旧实现退出清单与验收命令,再决定是否执行写入。</li>
939
- <li><strong>只读计划零变化</strong>:<code>adopt-plan</code> 不写任何文件(含临时文件)、不运行 git
940
- 写命令、不改名、不触碰远端;对输入仓字节零变化(前后哈希走查可证)。</li>
941
- <li><strong>采用与改名分离</strong>:基础设施采用绝不连带仓库改名或远端坐标变更;
942
- 两者是独立决策,工具不提供任何改名能力。</li>
943
- <li><strong>双轨不算完成</strong>:迁移完成判定要求旧重复实现已删除;只接入新基础设施
944
- 而旧实现仍在,判定恒为 false。</li>
2051
+ <li><strong>计划先行</strong>:任何存量仓先运行只读 <code>adopt-plan</code>,拿到现状、目标 Profile、精确写集、冲突、旧实现退出清单与验收命令,再决定是否执行写入。</li>
2052
+ <li><strong>只读计划零变化</strong>:<code>adopt-plan</code> 不写任何文件(含临时文件)、不运行 git 写命令、不改名、不触碰远端;对输入仓字节零变化(前后哈希走查可证)。</li>
2053
+ <li><strong>采用与改名分离</strong>:基础设施采用绝不连带仓库改名或远端坐标变更;两者是独立决策,工具不提供任何改名能力。</li>
2054
+ <li><strong>双轨不算完成</strong>:迁移完成判定要求旧重复实现已删除;只接入新基础设施而旧实现仍在,判定恒为 false。</li>
945
2055
  </ol>
946
2056
  <h2 id="adopt-plan-输出结构">adopt-plan 输出结构<a class="headerlink" href="#adopt-plan-输出结构" title="Permanent link">&para;</a></h2>
947
2057
  <table>
@@ -1003,9 +2113,9 @@
1003
2113
  ],
1004
2114
  &quot;targetProfile&quot;: &quot;generic&quot;,
1005
2115
  &quot;foundationPackages&quot;: [
1006
- { &quot;name&quot;: &quot;skill-family-contracts&quot;, &quot;version&quot;: &quot;0.1.2&quot;, &quot;digest&quot;: &quot;sha256:&lt;64 位十六进制&gt;&quot; },
1007
- { &quot;name&quot;: &quot;skill-family-harness-node&quot;, &quot;version&quot;: &quot;0.1.2&quot;, &quot;digest&quot;: &quot;sha256:&lt;64 位十六进制&gt;&quot; },
1008
- { &quot;name&quot;: &quot;skill-family-engineering-kit&quot;, &quot;version&quot;: &quot;0.1.2&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; }
1009
2119
  ],
1010
2120
  &quot;verification&quot;: {
1011
2121
  &quot;unit&quot;: &quot;docs/evidence/unit.json&quot;,
@@ -1015,19 +2125,13 @@
1015
2125
  }
1016
2126
  }
1017
2127
  </code></pre>
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>
1018
2130
  <ul>
1019
2131
  <li><code>legacyInfra</code> 每项给出旧实现路径与替代物;工具只读评估存在性,绝不代为删除。</li>
1020
- <li><code>exceptions</code> 是<strong>临时例外</strong>:必须同时含负责人(owner)、原因(reason)、
1021
- 截止时间(deadline)、迁移目标(migrationTarget)四项,缺任一字段即计为
1022
- 冲突(计划失败);到期例外不自动续期,持续阻断完成判定。</li>
1023
- <li><code>targetProfile</code> / <code>foundationPackages</code>:采用绑定。目标 Profile
1024
- 必须与计划 Profile 一致;三个 Foundation 包(contracts、harness-node、
1025
- engineering-kit)必须各自绑定<strong>精确版本号</strong>(不接受浮动范围)与
1026
- <code>sha256:</code> 摘要。</li>
1027
- <li><code>verification</code>:四类验证证据文档路径(unit、integration、
1028
- consumer、independentAudit)。每份证据必须是可解析 JSON 且其
1029
- <code>projectId</code> 与目标项目身份一致,才计为 proven;路径越界、缺失、
1030
- 不可解析、身份不符均为未证明,fail-closed。</li>
2132
+ <li><code>exceptions</code> 是<strong>临时例外</strong>:必须同时含负责人(owner)、原因(reason)、截止时间(deadline)、迁移目标(migrationTarget)四项,缺任一字段即计为冲突(计划失败);到期例外不自动续期,持续阻断完成判定。</li>
2133
+ <li><code>targetProfile</code> / <code>foundationPackages</code>:采用绑定。目标 Profile 必须与计划 Profile 一致;三个 Foundation 包(contracts、harness-node、engineering-kit)必须各自绑定<strong>精确版本号</strong>(不接受浮动范围)与 <code>sha256:</code> 摘要。</li>
2134
+ <li><code>verification</code>:四类验证证据文档路径(unit、integration、consumer、independentAudit)。每份证据必须是可解析 JSON 且其 <code>projectId</code> 与目标项目身份一致,才计为 proven;路径越界、缺失、不可解析、身份不符均为未证明,fail-closed。</li>
1031
2135
  </ul>
1032
2136
  <h2 id="迁移状态机">迁移状态机<a class="headerlink" href="#迁移状态机" title="Permanent link">&para;</a></h2>
1033
2137
  <p>状态单调递进,只由只读证据推导,任何工具都不通过写入推进状态:</p>
@@ -1067,20 +2171,15 @@
1067
2171
  <p><code>migration.completion.complete</code> 为 true 当且仅当<strong>全部八项</strong>成立:</p>
1068
2172
  <ol>
1069
2173
  <li>已声明契约有效的迁移清单(kind/字段经 Contracts schema 校验);</li>
1070
- <li>采用绑定已证明:目标 Profile 与计划一致,三个 Foundation 包均绑定
1071
- 精确版本与 sha256 摘要;</li>
1072
- <li>Project Manifest、managed lock、identity 与全部受管骨架文件在盘且
1073
- 摘要与计划一致(<code>adoptionProof.missing</code>/<code>mismatched</code> 为空);</li>
2174
+ <li>采用绑定已证明:目标 Profile 与计划一致,三个 Foundation 包均绑定精确版本与 sha256 摘要;</li>
2175
+ <li>Project Manifest、managed lock、identity 与全部受管骨架文件在盘且摘要与计划一致(<code>adoptionProof.missing</code>/<code>mismatched</code> 为空);</li>
1074
2176
  <li>写集中无待执行的 create/replace/project 动作(<code>pendingWrites</code> 为 0);</li>
1075
2177
  <li>Foundation check 门禁绿;</li>
1076
- <li>每项旧实现均已退出(absent)——containment 拒绝或畸形条目与 present
1077
- 同等 fail-closed;</li>
2178
+ <li>每项旧实现均已退出(absent)——containment 拒绝或畸形条目与 present 同等 fail-closed;</li>
1078
2179
  <li>无缺字段、无不可解析截止时间、无已到期的临时例外;无未解决的采用冲突;</li>
1079
- <li>四类验证证据(unit/integration/consumer/independentAudit)全部 proven
1080
- 且身份(projectId)匹配。</li>
2180
+ <li>四类验证证据(unit/integration/consumer/independentAudit)全部 proven 且身份(projectId)匹配。</li>
1081
2181
  </ol>
1082
- <p>未评估的输入与未证明等价:门禁只依据出示的证据前进。
1083
- 阻断理由(<code>blockers</code>)为稳定可读字符串,可直接进入迁移评审记录。</p>
2182
+ <p>未评估的输入与未证明等价:门禁只依据出示的证据前进。阻断理由(<code>blockers</code>)为稳定可读字符串,可直接进入迁移评审记录。</p>
1084
2183
  <h3 id="强制负例任一场景-completion-必须为-false">强制负例(任一场景 completion 必须为 false)<a class="headerlink" href="#强制负例任一场景-completion-必须为-false" title="Permanent link">&para;</a></h3>
1085
2184
  <ul>
1086
2185
  <li>空仓 + 空清单(无契约有效清单 → <code>not-declared</code>);</li>
@@ -1091,11 +2190,14 @@
1091
2190
  <li>消费者验证证据缺失或身份不符(<code>verified</code>,不得 complete);</li>
1092
2191
  <li>临时例外过期(工具绝不续期)。</li>
1093
2192
  </ul>
2193
+ <h2 id="旧实现删除与回滚合同">旧实现删除与回滚合同<a class="headerlink" href="#旧实现删除与回滚合同" title="Permanent link">&para;</a></h2>
2194
+ <ul>
2195
+ <li><strong>删除由调用方负责</strong>:<code>adopt-plan</code> 只评估旧实现存在性并列出退出清单,绝不代为删除;<code>foundation-gap</code> 与 <code>keep-business</code> 类能力不要求删除。</li>
2196
+ <li><strong>回滚以证据为准</strong>:采用落盘前必须先有 <code>adoptionProof</code> 与 <code>foundationPlanDigest</code> 双摘要绑定;回滚时以计划写集的 <code>expect.sha256</code> 前置状态还原,未声明前置状态的覆盖动作在 <code>projection</code> 阶段即拒绝。</li>
2197
+ <li><strong>fail-closed 默认</strong>:任何不可解析、越界、身份不符或证据缺失的输入,都使对应判定为未证明,不假设成功。</li>
2198
+ </ul>
1094
2199
  <h2 id="十字段-hand-off-草案">十字段 hand-off 草案<a class="headerlink" href="#十字段-hand-off-草案" title="Permanent link">&para;</a></h2>
1095
- <p><code>adopt-plan</code> 输出携带 <code>handoffDraft</code> 子块(kind=<code>skill-family.handoff-draft</code>,
1096
- schemaVersion=1),为 planner 侧的十字段 hand-off 提供结构化数据草案。
1097
- 字段来源只有两种:<code>derived</code>(可由只读证据机械推导)与 <code>INCOMPLETE</code>
1098
- (不可机械推导,绝不猜测)。十字段与源码常量 <code>HANDOFF_FIELDS</code> 逐一对应:</p>
2200
+ <p><code>adopt-plan</code> 输出携带 <code>handoffDraft</code> 子块(kind=<code>skill-family.handoff-draft</code>,schemaVersion=1),为 planner 侧的十字段 hand-off 提供结构化数据草案。字段来源只有两种:<code>derived</code>(可由只读证据机械推导)与 <code>INCOMPLETE</code>(不可机械推导,绝不猜测)。十字段与源码常量 <code>HANDOFF_FIELDS</code> 逐一对应:</p>
1099
2201
  <table>
1100
2202
  <thead>
1101
2203
  <tr>
@@ -1161,28 +2263,20 @@ schemaVersion=1),为 planner 侧的十字段 hand-off 提供结构化数据
1161
2263
  <ul>
1162
2264
  <li>任何 INCOMPLETE 字段都使 <code>ready=false</code>:草案带缺口就不得进入 hand-off。</li>
1163
2265
  <li>工具绝不猜测不可机械推导的字段:</li>
1164
- <li><code>business-logic-to-keep</code> 与 <code>legacy-removal-recovery</code> <strong>恒 INCOMPLETE</strong>,
1165
- 必须由人类负责人给出,工具无推导依据;</li>
1166
- <li><code>foundation-binding</code> 在无迁移清单声明(<code>foundationPackages</code>)时
1167
- INCOMPLETE,只计清单声明的绑定;</li>
1168
- <li><code>verification-entries</code> 在四类证据(unit/integration/consumer/
1169
- independentAudit)任一未达 proven 时 INCOMPLETE。</li>
2266
+ <li><code>business-logic-to-keep</code> 与 <code>legacy-removal-recovery</code> <strong>恒 INCOMPLETE</strong>,必须由人类负责人给出,工具无推导依据;</li>
2267
+ <li><code>foundation-binding</code> 在无迁移清单声明(<code>foundationPackages</code>)时 INCOMPLETE,只计清单声明的绑定;</li>
2268
+ <li><code>verification-entries</code> 在四类证据(unit/integration/consumer/independentAudit)任一未达 proven 时 INCOMPLETE。</li>
1170
2269
  </ul>
1171
2270
  <h3 id="绑定">绑定<a class="headerlink" href="#绑定" title="Permanent link">&para;</a></h3>
1172
- <p>草案携带双 sha256 摘要(<code>binding</code> 块):<code>targetSetDigest</code> 汇总目标仓
1173
- 文件集合,<code>foundationPlanDigest</code> 汇总 Foundation 计划写集。同一目标两次
1174
- 计划得到相同摘要,草案与计划时刻的目标状态精确绑定。</p>
2271
+ <p>草案携带双 sha256 摘要(<code>binding</code> 块):<code>targetSetDigest</code> 汇总目标仓文件集合,<code>foundationPlanDigest</code> 汇总 Foundation 计划写集。同一目标两次计划得到相同摘要,草案与计划时刻的目标状态精确绑定。</p>
1175
2272
  <h3 id="渲染边界">渲染边界<a class="headerlink" href="#渲染边界" title="Permanent link">&para;</a></h3>
1176
2273
  <ul>
1177
2274
  <li>渲染器只写 planner 侧的 hand-off 草案,<strong>绝不写消费者仓</strong>;</li>
1178
- <li>不新增第五个 Kit 顶层命令:Kit 顶层命令恒为 scaffold、adopt-plan、
1179
- projection、check 四个,<code>handoffDraft</code> 只是 <code>adopt-plan</code> 输出的子块。</li>
2275
+ <li>不新增第五个 Kit 顶层命令:Kit 顶层命令恒为 scaffold、adopt-plan、projection、check 四个,<code>handoffDraft</code> 只是 <code>adopt-plan</code> 输出的子块。</li>
1180
2276
  </ul>
1181
2277
  <h2 id="危害类-fixture">危害类 fixture<a class="headerlink" href="#危害类-fixture" title="Permanent link">&para;</a></h2>
1182
- <p><code>fixtures/adoption/cases/</code> 覆盖七个危害类:dirty 仓、嵌套仓、
1183
- tracked-but-ignored、符号链接占位、生成物漂移、旧实现退出门禁、
1184
- 临时例外字段。每个案例以字节级前后快照证明计划只读;案例说明见仓内
1185
- <code>fixtures/adoption/README.md</code>。</p>
2278
+ <p><code>fixtures/adoption/cases/</code> 覆盖七个危害类:dirty 仓、嵌套仓、tracked-but-ignored、符号链接占位、生成物漂移、旧实现退出门禁、临时例外字段。每个案例以字节级前后快照证明计划只读;案例说明见仓内 <code>fixtures/adoption/README.md</code>。</p>
2279
+
1186
2280
 
1187
2281
 
1188
2282
 
@@ -1195,48 +2289,47 @@ tracked-but-ignored、符号链接占位、生成物漂移、旧实现退出门
1195
2289
 
1196
2290
 
1197
2291
 
1198
-
1199
2292
  </article>
1200
2293
  </div>
1201
-
1202
-
2294
+
2295
+
1203
2296
  <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script>
1204
2297
  </div>
1205
-
2298
+
1206
2299
  </main>
1207
-
2300
+
1208
2301
  <footer class="md-footer">
1209
-
2302
+
1210
2303
  <div class="md-footer-meta md-typeset">
1211
2304
  <div class="md-footer-meta__inner md-grid">
1212
2305
  <div class="md-copyright">
1213
-
1214
-
2306
+
2307
+
1215
2308
  Made with
1216
2309
  <a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener">
1217
2310
  Material for MkDocs
1218
2311
  </a>
1219
-
2312
+
1220
2313
  </div>
1221
-
2314
+
1222
2315
  </div>
1223
2316
  </div>
1224
2317
  </footer>
1225
-
2318
+
1226
2319
  </div>
1227
2320
  <div class="md-dialog" data-md-component="dialog">
1228
2321
  <div class="md-dialog__inner md-typeset"></div>
1229
2322
  </div>
1230
-
1231
-
1232
-
1233
-
1234
-
2323
+
2324
+
2325
+
2326
+
2327
+
1235
2328
  <script id="__config" type="application/json">{"annotate": null, "base": "..", "features": [], "search": "../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "\u5df2\u590d\u5236", "clipboard.copy": "\u590d\u5236", "search.result.more.one": "\u5728\u8be5\u9875\u4e0a\u8fd8\u6709 1 \u4e2a\u7b26\u5408\u6761\u4ef6\u7684\u7ed3\u679c", "search.result.more.other": "\u5728\u8be5\u9875\u4e0a\u8fd8\u6709 # \u4e2a\u7b26\u5408\u6761\u4ef6\u7684\u7ed3\u679c", "search.result.none": "\u6ca1\u6709\u627e\u5230\u7b26\u5408\u6761\u4ef6\u7684\u7ed3\u679c", "search.result.one": "\u627e\u5230 1 \u4e2a\u7b26\u5408\u6761\u4ef6\u7684\u7ed3\u679c", "search.result.other": "# \u4e2a\u7b26\u5408\u6761\u4ef6\u7684\u7ed3\u679c", "search.result.placeholder": "\u952e\u5165\u4ee5\u5f00\u59cb\u641c\u7d22", "search.result.term.missing": "\u7f3a\u5c11", "select.version": "\u9009\u62e9\u5f53\u524d\u7248\u672c"}, "version": null}</script>
1236
-
1237
-
2329
+
2330
+
1238
2331
  <script src="../assets/javascripts/bundle.d7400e89.min.js"></script>
1239
-
1240
-
2332
+
2333
+
1241
2334
  </body>
1242
2335
  </html>