skill-family-engineering-kit 0.2.0 → 0.2.1

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 (70) hide show
  1. package/CHANGELOG.md +21 -0
  2. package/CHANGELOG.zh-CN.md +21 -0
  3. package/NOTICE +10 -0
  4. package/README.md +157 -55
  5. package/README.zh-CN.md +207 -0
  6. package/candidate/index.mjs +4 -0
  7. package/candidate/profile-bundle.mjs +268 -0
  8. package/candidate/projection-bundle-cli.mjs +22 -0
  9. package/docs/404.html +1434 -408
  10. package/docs/agents/architecture-routing/index.html +1944 -0
  11. package/docs/agents/capability-catalog.en.json +1561 -0
  12. package/docs/agents/capability-catalog.json +934 -0
  13. package/docs/agents/capability-catalog.schema.json +179 -0
  14. package/docs/agents/capability-catalog.zh-CN.json +1561 -0
  15. package/docs/agents/index.html +1914 -0
  16. package/docs/architecture/index.html +1706 -497
  17. package/docs/assets/javascripts/lunr/tinyseg.js +2 -2
  18. package/docs/assets/javascripts/lunr/wordcut.js +37 -37
  19. package/docs/en/agents/architecture-routing/index.html +1944 -0
  20. package/docs/en/agents/index.html +1925 -0
  21. package/docs/en/architecture/index.html +2187 -0
  22. package/docs/en/examples-and-fixtures/index.html +1888 -0
  23. package/docs/en/help/index.html +2035 -0
  24. package/docs/en/index.html +1895 -0
  25. package/docs/en/licensing/index.html +1917 -0
  26. package/docs/en/migration/index.html +2334 -0
  27. package/docs/en/quickstart/index.html +1919 -0
  28. package/docs/en/recipes/adapter-text-closure/index.html +2000 -0
  29. package/docs/en/recipes/adopt-existing-repository/index.html +1986 -0
  30. package/docs/en/recipes/deterministic-human-report/index.html +1998 -0
  31. package/docs/en/recipes/domain-schema-validation/index.html +2007 -0
  32. package/docs/en/recipes/durable-local-state/index.html +2009 -0
  33. package/docs/en/recipes/host-profile-integration/index.html +2001 -0
  34. package/docs/en/recipes/index.html +1876 -0
  35. package/docs/en/recipes/safe-filesystem-and-atomic-write/index.html +1994 -0
  36. package/docs/en/reference/api/index.html +1917 -0
  37. package/docs/en/reference/compatibility/index.html +1990 -0
  38. package/docs/en/reference/failure-and-side-effect-matrix/index.html +2216 -0
  39. package/docs/examples-and-fixtures/index.html +1871 -0
  40. package/docs/git-lifecycle/index.html +1508 -482
  41. package/docs/help/index.html +1655 -554
  42. package/docs/index.html +1479 -450
  43. package/docs/integration/audit/failure-evidence/index.html +1488 -462
  44. package/docs/integration/audit/independence/index.html +1513 -487
  45. package/docs/integration/audit/index.html +1514 -488
  46. package/docs/integration/audit/mutation-taxonomy/index.html +1548 -522
  47. package/docs/integration/audit/version-compatibility/index.html +1489 -463
  48. package/docs/licensing/index.html +1917 -0
  49. package/docs/migration/index.html +1678 -586
  50. package/docs/public/status/index.html +1542 -516
  51. package/docs/quickstart/index.html +1589 -539
  52. package/docs/recipes/adapter-text-closure/index.html +2000 -0
  53. package/docs/recipes/adopt-existing-repository/index.html +1986 -0
  54. package/docs/recipes/deterministic-human-report/index.html +1998 -0
  55. package/docs/recipes/domain-schema-validation/index.html +2007 -0
  56. package/docs/recipes/durable-local-state/index.html +2009 -0
  57. package/docs/recipes/host-profile-integration/index.html +2001 -0
  58. package/docs/recipes/index.html +1876 -0
  59. package/docs/recipes/safe-filesystem-and-atomic-write/index.html +1994 -0
  60. package/docs/reference/api/contracts/index.html +2532 -0
  61. package/docs/reference/api/engineering-kit/index.html +2551 -0
  62. package/docs/reference/api/harness/index.html +2608 -0
  63. package/docs/reference/api/index.html +1857 -0
  64. package/docs/reference/compatibility/index.html +1990 -0
  65. package/docs/reference/failure-and-side-effect-matrix/index.html +2216 -0
  66. package/docs/search/search_index.json +1 -1
  67. package/docs/setup/index.html +1494 -468
  68. package/docs/sitemap.xml +152 -0
  69. package/package.json +14 -4
  70. package/release-notes/0.2.1.yaml +23 -0
@@ -0,0 +1,2216 @@
1
+
2
+ <!doctype html>
3
+ <html lang="zh" class="no-js">
4
+ <head>
5
+
6
+ <meta charset="utf-8">
7
+ <meta name="viewport" content="width=device-width,initial-scale=1">
8
+
9
+ <meta name="description" content="Skill Family 生命周期公共工程基础设施父工作区">
10
+
11
+
12
+
13
+ <link rel="canonical" href="https://ifoohoo.github.io/skill-family-engineering-kit/reference/failure-and-side-effect-matrix/">
14
+
15
+
16
+ <link rel="prev" href="../compatibility/">
17
+
18
+
19
+ <link rel="next" href="../api/">
20
+
21
+
22
+
23
+
24
+
25
+ <link rel="icon" href="../../assets/images/favicon.png">
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
+
34
+ <link rel="stylesheet" href="../../assets/stylesheets/main.ec1eaa64.min.css">
35
+
36
+
37
+ <link rel="stylesheet" href="../../assets/stylesheets/palette.ab4e12ef.min.css">
38
+
39
+
40
+
41
+
42
+
43
+
44
+
45
+
46
+
47
+
48
+
49
+
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
+
54
+
55
+
56
+ </head>
57
+
58
+
59
+
60
+
61
+
62
+
63
+
64
+
65
+
66
+ <body dir="ltr" data-md-color-scheme="default" data-md-color-primary="indigo" data-md-color-accent="indigo">
67
+
68
+
69
+ <input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
70
+ <input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
71
+ <label class="md-overlay" for="__drawer"></label>
72
+ <div data-md-component="skip">
73
+
74
+
75
+ <a href="#失败与副作用矩阵" class="md-skip">
76
+ 跳转至
77
+ </a>
78
+
79
+ </div>
80
+ <div data-md-component="announce">
81
+
82
+ </div>
83
+
84
+
85
+
86
+
87
+
88
+
89
+ <header class="md-header md-header--shadow" data-md-component="header">
90
+ <nav class="md-header__inner md-grid" aria-label="页眉">
91
+ <a href="../.." title="Skill Family Foundation" class="md-header__button md-logo" aria-label="Skill Family Foundation" data-md-component="logo">
92
+
93
+
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
+
96
+ </a>
97
+ <label class="md-header__button md-icon" for="__drawer">
98
+
99
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg>
100
+ </label>
101
+ <div class="md-header__title" data-md-component="header-title">
102
+ <div class="md-header__ellipsis">
103
+ <div class="md-header__topic">
104
+ <span class="md-ellipsis">
105
+ Skill Family Foundation
106
+ </span>
107
+ </div>
108
+ <div class="md-header__topic" data-md-component="header-topic">
109
+ <span class="md-ellipsis">
110
+
111
+ 中文 · 失败与副作用
112
+
113
+ </span>
114
+ </div>
115
+ </div>
116
+ </div>
117
+
118
+
119
+ <form class="md-header__option" data-md-component="palette">
120
+
121
+
122
+
123
+
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
+
126
+ <label class="md-header__button md-icon" title="切换到深色模式" for="__palette_1" hidden>
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
+ </label>
129
+
130
+
131
+
132
+
133
+
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
+
136
+ <label class="md-header__button md-icon" title="切换到浅色模式" for="__palette_0" hidden>
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
+ </label>
139
+
140
+
141
+ </form>
142
+
143
+
144
+
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
+
151
+ <label class="md-header__button md-icon" for="__search">
152
+
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
+ </label>
155
+ <div class="md-search" data-md-component="search" role="dialog">
156
+ <label class="md-search__overlay" for="__search"></label>
157
+ <div class="md-search__inner" role="search">
158
+ <form class="md-search__form" name="search">
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
+ <label class="md-search__icon md-icon" for="__search">
161
+
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
+
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
+ </label>
166
+ <nav class="md-search__options" aria-label="查找">
167
+
168
+ <button type="reset" class="md-search__icon md-icon" title="清空当前内容" aria-label="清空当前内容" tabindex="-1">
169
+
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
+ </button>
172
+ </nav>
173
+
174
+ </form>
175
+ <div class="md-search__output">
176
+ <div class="md-search__scrollwrap" tabindex="0" data-md-scrollfix>
177
+ <div class="md-search-result" data-md-component="search-result">
178
+ <div class="md-search-result__meta">
179
+ 正在初始化搜索引擎
180
+ </div>
181
+ <ol class="md-search-result__list" role="presentation"></ol>
182
+ </div>
183
+ </div>
184
+ </div>
185
+ </div>
186
+ </div>
187
+
188
+
189
+
190
+ </nav>
191
+
192
+ </header>
193
+
194
+ <div class="md-container" data-md-component="container">
195
+
196
+
197
+
198
+
199
+
200
+
201
+ <main class="md-main" data-md-component="main">
202
+ <div class="md-main__inner md-grid">
203
+
204
+
205
+
206
+ <div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" >
207
+ <div class="md-sidebar__scrollwrap">
208
+ <div class="md-sidebar__inner">
209
+
210
+
211
+
212
+
213
+ <nav class="md-nav md-nav--primary" aria-label="导航栏" data-md-level="0">
214
+ <label class="md-nav__title" for="__drawer">
215
+ <a href="../.." title="Skill Family Foundation" class="md-nav__button md-logo" aria-label="Skill Family Foundation" data-md-component="logo">
216
+
217
+
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
+
220
+ </a>
221
+ Skill Family Foundation
222
+ </label>
223
+
224
+ <ul class="md-nav__list" data-md-scrollfix>
225
+
226
+
227
+
228
+
229
+
230
+
231
+
232
+ <li class="md-nav__item">
233
+ <a href="../.." class="md-nav__link">
234
+
235
+
236
+
237
+ <span class="md-ellipsis">
238
+
239
+
240
+ 中文 · 首页
241
+
242
+
243
+
244
+ </span>
245
+
246
+
247
+
248
+ </a>
249
+ </li>
250
+
251
+
252
+
253
+
254
+
255
+
256
+
257
+
258
+
259
+ <li class="md-nav__item">
260
+ <a href="../../setup/" class="md-nav__link">
261
+
262
+
263
+
264
+ <span class="md-ellipsis">
265
+
266
+
267
+ 中文 · 安装与环境
268
+
269
+
270
+
271
+ </span>
272
+
273
+
274
+
275
+ </a>
276
+ </li>
277
+
278
+
279
+
280
+
281
+
282
+
283
+
284
+
285
+
286
+ <li class="md-nav__item">
287
+ <a href="../../quickstart/" class="md-nav__link">
288
+
289
+
290
+
291
+ <span class="md-ellipsis">
292
+
293
+
294
+ 中文 · 快速开始
295
+
296
+
297
+
298
+ </span>
299
+
300
+
301
+
302
+ </a>
303
+ </li>
304
+
305
+
306
+
307
+
308
+
309
+
310
+
311
+
312
+
313
+ <li class="md-nav__item">
314
+ <a href="../../git-lifecycle/" class="md-nav__link">
315
+
316
+
317
+
318
+ <span class="md-ellipsis">
319
+
320
+
321
+ 中文 · Git 生命周期指南
322
+
323
+
324
+
325
+ </span>
326
+
327
+
328
+
329
+ </a>
330
+ </li>
331
+
332
+
333
+
334
+
335
+
336
+
337
+
338
+
339
+
340
+ <li class="md-nav__item">
341
+ <a href="../../help/" class="md-nav__link">
342
+
343
+
344
+
345
+ <span class="md-ellipsis">
346
+
347
+
348
+ 中文 · 能力与诊断
349
+
350
+
351
+
352
+ </span>
353
+
354
+
355
+
356
+ </a>
357
+ </li>
358
+
359
+
360
+
361
+
362
+
363
+
364
+
365
+
366
+
367
+ <li class="md-nav__item">
368
+ <a href="../../architecture/" class="md-nav__link">
369
+
370
+
371
+
372
+ <span class="md-ellipsis">
373
+
374
+
375
+ 中文 · 架构边界
376
+
377
+
378
+
379
+ </span>
380
+
381
+
382
+
383
+ </a>
384
+ </li>
385
+
386
+
387
+
388
+
389
+
390
+
391
+
392
+
393
+
394
+ <li class="md-nav__item">
395
+ <a href="../../public/status/" class="md-nav__link">
396
+
397
+
398
+
399
+ <span class="md-ellipsis">
400
+
401
+
402
+ 中文 · 公开状态
403
+
404
+
405
+
406
+ </span>
407
+
408
+
409
+
410
+ </a>
411
+ </li>
412
+
413
+
414
+
415
+
416
+
417
+
418
+
419
+
420
+
421
+ <li class="md-nav__item">
422
+ <a href="../../migration/" class="md-nav__link">
423
+
424
+
425
+
426
+ <span class="md-ellipsis">
427
+
428
+
429
+ 中文 · 存量采用与迁移
430
+
431
+
432
+
433
+ </span>
434
+
435
+
436
+
437
+ </a>
438
+ </li>
439
+
440
+
441
+
442
+
443
+
444
+
445
+
446
+
447
+
448
+ <li class="md-nav__item">
449
+ <a href="../../licensing/" class="md-nav__link">
450
+
451
+
452
+
453
+ <span class="md-ellipsis">
454
+
455
+
456
+ 中文 · 许可与署名
457
+
458
+
459
+
460
+ </span>
461
+
462
+
463
+
464
+ </a>
465
+ </li>
466
+
467
+
468
+
469
+
470
+
471
+
472
+
473
+
474
+
475
+ <li class="md-nav__item">
476
+ <a href="../../agents/" class="md-nav__link">
477
+
478
+
479
+
480
+ <span class="md-ellipsis">
481
+
482
+
483
+ 中文 · 智能体入口
484
+
485
+
486
+
487
+ </span>
488
+
489
+
490
+
491
+ </a>
492
+ </li>
493
+
494
+
495
+
496
+
497
+
498
+
499
+
500
+
501
+
502
+ <li class="md-nav__item">
503
+ <a href="../../agents/architecture-routing/" class="md-nav__link">
504
+
505
+
506
+
507
+ <span class="md-ellipsis">
508
+
509
+
510
+ 中文 · 架构路由
511
+
512
+
513
+
514
+ </span>
515
+
516
+
517
+
518
+ </a>
519
+ </li>
520
+
521
+
522
+
523
+
524
+
525
+
526
+
527
+
528
+
529
+ <li class="md-nav__item">
530
+ <a href="../compatibility/" class="md-nav__link">
531
+
532
+
533
+
534
+ <span class="md-ellipsis">
535
+
536
+
537
+ 中文 · 兼容性
538
+
539
+
540
+
541
+ </span>
542
+
543
+
544
+
545
+ </a>
546
+ </li>
547
+
548
+
549
+
550
+
551
+
552
+
553
+
554
+
555
+
556
+
557
+
558
+ <li class="md-nav__item md-nav__item--active">
559
+
560
+ <input class="md-nav__toggle md-toggle" type="checkbox" id="__toc">
561
+
562
+
563
+
564
+
565
+
566
+ <label class="md-nav__link md-nav__link--active" for="__toc">
567
+
568
+
569
+
570
+ <span class="md-ellipsis">
571
+
572
+
573
+ 中文 · 失败与副作用
574
+
575
+
576
+
577
+ </span>
578
+
579
+
580
+
581
+ <span class="md-nav__icon md-icon"></span>
582
+ </label>
583
+
584
+ <a href="./" class="md-nav__link md-nav__link--active">
585
+
586
+
587
+
588
+ <span class="md-ellipsis">
589
+
590
+
591
+ 中文 · 失败与副作用
592
+
593
+
594
+
595
+ </span>
596
+
597
+
598
+
599
+ </a>
600
+
601
+
602
+
603
+ <nav class="md-nav md-nav--secondary" aria-label="目录">
604
+
605
+
606
+
607
+
608
+
609
+
610
+ <label class="md-nav__title" for="__toc">
611
+ <span class="md-nav__icon md-icon"></span>
612
+ 目录
613
+ </label>
614
+ <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
615
+
616
+ <li class="md-nav__item">
617
+ <a href="#Contracts纯函数层" class="md-nav__link">
618
+ <span class="md-ellipsis">
619
+
620
+ Contracts(纯函数层)
621
+
622
+ </span>
623
+ </a>
624
+
625
+ </li>
626
+
627
+ <li class="md-nav__item">
628
+ <a href="#Harness机制层受收容" class="md-nav__link">
629
+ <span class="md-ellipsis">
630
+
631
+ Harness(机制层,受收容)
632
+
633
+ </span>
634
+ </a>
635
+
636
+ </li>
637
+
638
+ <li class="md-nav__item">
639
+ <a href="#Engineering-Kit工程命令层" class="md-nav__link">
640
+ <span class="md-ellipsis">
641
+
642
+ Engineering Kit(工程命令层)
643
+
644
+ </span>
645
+ </a>
646
+
647
+ </li>
648
+
649
+ <li class="md-nav__item">
650
+ <a href="#残余状态合集" class="md-nav__link">
651
+ <span class="md-ellipsis">
652
+
653
+ 残余状态合集
654
+
655
+ </span>
656
+ </a>
657
+
658
+ </li>
659
+
660
+ <li class="md-nav__item">
661
+ <a href="#失败后调用方该做什么" class="md-nav__link">
662
+ <span class="md-ellipsis">
663
+
664
+ 失败后调用方该做什么
665
+
666
+ </span>
667
+ </a>
668
+
669
+ </li>
670
+
671
+ </ul>
672
+
673
+ </nav>
674
+
675
+ </li>
676
+
677
+
678
+
679
+
680
+
681
+
682
+
683
+
684
+
685
+ <li class="md-nav__item">
686
+ <a href="../api/" class="md-nav__link">
687
+
688
+
689
+
690
+ <span class="md-ellipsis">
691
+
692
+
693
+ 中文 · API 参考
694
+
695
+
696
+
697
+ </span>
698
+
699
+
700
+
701
+ </a>
702
+ </li>
703
+
704
+
705
+
706
+
707
+
708
+
709
+
710
+
711
+
712
+ <li class="md-nav__item">
713
+ <a href="../api/contracts/" class="md-nav__link">
714
+
715
+
716
+
717
+ <span class="md-ellipsis">
718
+
719
+
720
+ 中文 · Contracts API
721
+
722
+
723
+
724
+ </span>
725
+
726
+
727
+
728
+ </a>
729
+ </li>
730
+
731
+
732
+
733
+
734
+
735
+
736
+
737
+
738
+
739
+ <li class="md-nav__item">
740
+ <a href="../api/harness/" class="md-nav__link">
741
+
742
+
743
+
744
+ <span class="md-ellipsis">
745
+
746
+
747
+ 中文 · Harness API
748
+
749
+
750
+
751
+ </span>
752
+
753
+
754
+
755
+ </a>
756
+ </li>
757
+
758
+
759
+
760
+
761
+
762
+
763
+
764
+
765
+
766
+ <li class="md-nav__item">
767
+ <a href="../api/engineering-kit/" class="md-nav__link">
768
+
769
+
770
+
771
+ <span class="md-ellipsis">
772
+
773
+
774
+ 中文 · Engineering Kit API
775
+
776
+
777
+
778
+ </span>
779
+
780
+
781
+
782
+ </a>
783
+ </li>
784
+
785
+
786
+
787
+
788
+
789
+
790
+
791
+
792
+
793
+ <li class="md-nav__item">
794
+ <a href="../../examples-and-fixtures/" class="md-nav__link">
795
+
796
+
797
+
798
+ <span class="md-ellipsis">
799
+
800
+
801
+ 中文 · 样例与 Fixture
802
+
803
+
804
+
805
+ </span>
806
+
807
+
808
+
809
+ </a>
810
+ </li>
811
+
812
+
813
+
814
+
815
+
816
+
817
+
818
+
819
+
820
+ <li class="md-nav__item">
821
+ <a href="../../recipes/" class="md-nav__link">
822
+
823
+
824
+
825
+ <span class="md-ellipsis">
826
+
827
+
828
+ 中文 · Recipes
829
+
830
+
831
+
832
+ </span>
833
+
834
+
835
+
836
+ </a>
837
+ </li>
838
+
839
+
840
+
841
+
842
+
843
+
844
+
845
+
846
+
847
+ <li class="md-nav__item">
848
+ <a href="../../recipes/adopt-existing-repository/" class="md-nav__link">
849
+
850
+
851
+
852
+ <span class="md-ellipsis">
853
+
854
+
855
+ 中文 · 采用存量仓库
856
+
857
+
858
+
859
+ </span>
860
+
861
+
862
+
863
+ </a>
864
+ </li>
865
+
866
+
867
+
868
+
869
+
870
+
871
+
872
+
873
+
874
+ <li class="md-nav__item">
875
+ <a href="../../recipes/safe-filesystem-and-atomic-write/" class="md-nav__link">
876
+
877
+
878
+
879
+ <span class="md-ellipsis">
880
+
881
+
882
+ 中文 · 安全文件系统与原子写
883
+
884
+
885
+
886
+ </span>
887
+
888
+
889
+
890
+ </a>
891
+ </li>
892
+
893
+
894
+
895
+
896
+
897
+
898
+
899
+
900
+
901
+ <li class="md-nav__item">
902
+ <a href="../../recipes/adapter-text-closure/" class="md-nav__link">
903
+
904
+
905
+
906
+ <span class="md-ellipsis">
907
+
908
+
909
+ 中文 · Adapter 文本闭包
910
+
911
+
912
+
913
+ </span>
914
+
915
+
916
+
917
+ </a>
918
+ </li>
919
+
920
+
921
+
922
+
923
+
924
+
925
+
926
+
927
+
928
+ <li class="md-nav__item">
929
+ <a href="../../recipes/deterministic-human-report/" class="md-nav__link">
930
+
931
+
932
+
933
+ <span class="md-ellipsis">
934
+
935
+
936
+ 中文 · 确定性人类报告
937
+
938
+
939
+
940
+ </span>
941
+
942
+
943
+
944
+ </a>
945
+ </li>
946
+
947
+
948
+
949
+
950
+
951
+
952
+
953
+
954
+
955
+ <li class="md-nav__item">
956
+ <a href="../../recipes/durable-local-state/" class="md-nav__link">
957
+
958
+
959
+
960
+ <span class="md-ellipsis">
961
+
962
+
963
+ 中文 · 持久本地状态
964
+
965
+
966
+
967
+ </span>
968
+
969
+
970
+
971
+ </a>
972
+ </li>
973
+
974
+
975
+
976
+
977
+
978
+
979
+
980
+
981
+
982
+ <li class="md-nav__item">
983
+ <a href="../../recipes/host-profile-integration/" class="md-nav__link">
984
+
985
+
986
+
987
+ <span class="md-ellipsis">
988
+
989
+
990
+ 中文 · 宿主 Profile 集成
991
+
992
+
993
+
994
+ </span>
995
+
996
+
997
+
998
+ </a>
999
+ </li>
1000
+
1001
+
1002
+
1003
+
1004
+
1005
+
1006
+
1007
+
1008
+
1009
+ <li class="md-nav__item">
1010
+ <a href="../../recipes/domain-schema-validation/" class="md-nav__link">
1011
+
1012
+
1013
+
1014
+ <span class="md-ellipsis">
1015
+
1016
+
1017
+ 中文 · 领域 Schema 校验
1018
+
1019
+
1020
+
1021
+ </span>
1022
+
1023
+
1024
+
1025
+ </a>
1026
+ </li>
1027
+
1028
+
1029
+
1030
+
1031
+
1032
+
1033
+
1034
+
1035
+
1036
+ <li class="md-nav__item">
1037
+ <a href="../../en/" class="md-nav__link">
1038
+
1039
+
1040
+
1041
+ <span class="md-ellipsis">
1042
+
1043
+
1044
+ English · Home
1045
+
1046
+
1047
+
1048
+ </span>
1049
+
1050
+
1051
+
1052
+ </a>
1053
+ </li>
1054
+
1055
+
1056
+
1057
+
1058
+
1059
+
1060
+
1061
+
1062
+
1063
+ <li class="md-nav__item">
1064
+ <a href="../../en/quickstart/" class="md-nav__link">
1065
+
1066
+
1067
+
1068
+ <span class="md-ellipsis">
1069
+
1070
+
1071
+ English · Quickstart
1072
+
1073
+
1074
+
1075
+ </span>
1076
+
1077
+
1078
+
1079
+ </a>
1080
+ </li>
1081
+
1082
+
1083
+
1084
+
1085
+
1086
+
1087
+
1088
+
1089
+
1090
+ <li class="md-nav__item">
1091
+ <a href="../../en/help/" class="md-nav__link">
1092
+
1093
+
1094
+
1095
+ <span class="md-ellipsis">
1096
+
1097
+
1098
+ English · Capabilities and diagnostics
1099
+
1100
+
1101
+
1102
+ </span>
1103
+
1104
+
1105
+
1106
+ </a>
1107
+ </li>
1108
+
1109
+
1110
+
1111
+
1112
+
1113
+
1114
+
1115
+
1116
+
1117
+ <li class="md-nav__item">
1118
+ <a href="../../en/architecture/" class="md-nav__link">
1119
+
1120
+
1121
+
1122
+ <span class="md-ellipsis">
1123
+
1124
+
1125
+ English · Architecture
1126
+
1127
+
1128
+
1129
+ </span>
1130
+
1131
+
1132
+
1133
+ </a>
1134
+ </li>
1135
+
1136
+
1137
+
1138
+
1139
+
1140
+
1141
+
1142
+
1143
+
1144
+ <li class="md-nav__item">
1145
+ <a href="../../en/migration/" class="md-nav__link">
1146
+
1147
+
1148
+
1149
+ <span class="md-ellipsis">
1150
+
1151
+
1152
+ English · Migration
1153
+
1154
+
1155
+
1156
+ </span>
1157
+
1158
+
1159
+
1160
+ </a>
1161
+ </li>
1162
+
1163
+
1164
+
1165
+
1166
+
1167
+
1168
+
1169
+
1170
+
1171
+ <li class="md-nav__item">
1172
+ <a href="../../en/licensing/" class="md-nav__link">
1173
+
1174
+
1175
+
1176
+ <span class="md-ellipsis">
1177
+
1178
+
1179
+ English · Licensing
1180
+
1181
+
1182
+
1183
+ </span>
1184
+
1185
+
1186
+
1187
+ </a>
1188
+ </li>
1189
+
1190
+
1191
+
1192
+
1193
+
1194
+
1195
+
1196
+
1197
+
1198
+ <li class="md-nav__item">
1199
+ <a href="../../en/agents/" class="md-nav__link">
1200
+
1201
+
1202
+
1203
+ <span class="md-ellipsis">
1204
+
1205
+
1206
+ English · Agent entry
1207
+
1208
+
1209
+
1210
+ </span>
1211
+
1212
+
1213
+
1214
+ </a>
1215
+ </li>
1216
+
1217
+
1218
+
1219
+
1220
+
1221
+
1222
+
1223
+
1224
+
1225
+ <li class="md-nav__item">
1226
+ <a href="../../en/agents/architecture-routing/" class="md-nav__link">
1227
+
1228
+
1229
+
1230
+ <span class="md-ellipsis">
1231
+
1232
+
1233
+ English · Architecture routing
1234
+
1235
+
1236
+
1237
+ </span>
1238
+
1239
+
1240
+
1241
+ </a>
1242
+ </li>
1243
+
1244
+
1245
+
1246
+
1247
+
1248
+
1249
+
1250
+
1251
+
1252
+ <li class="md-nav__item">
1253
+ <a href="../../en/reference/compatibility/" class="md-nav__link">
1254
+
1255
+
1256
+
1257
+ <span class="md-ellipsis">
1258
+
1259
+
1260
+ English · Compatibility
1261
+
1262
+
1263
+
1264
+ </span>
1265
+
1266
+
1267
+
1268
+ </a>
1269
+ </li>
1270
+
1271
+
1272
+
1273
+
1274
+
1275
+
1276
+
1277
+
1278
+
1279
+ <li class="md-nav__item">
1280
+ <a href="../../en/reference/failure-and-side-effect-matrix/" class="md-nav__link">
1281
+
1282
+
1283
+
1284
+ <span class="md-ellipsis">
1285
+
1286
+
1287
+ English · Failures and side effects
1288
+
1289
+
1290
+
1291
+ </span>
1292
+
1293
+
1294
+
1295
+ </a>
1296
+ </li>
1297
+
1298
+
1299
+
1300
+
1301
+
1302
+
1303
+
1304
+
1305
+
1306
+ <li class="md-nav__item">
1307
+ <a href="../../en/reference/api/" class="md-nav__link">
1308
+
1309
+
1310
+
1311
+ <span class="md-ellipsis">
1312
+
1313
+
1314
+ English · API reference
1315
+
1316
+
1317
+
1318
+ </span>
1319
+
1320
+
1321
+
1322
+ </a>
1323
+ </li>
1324
+
1325
+
1326
+
1327
+
1328
+
1329
+
1330
+
1331
+
1332
+
1333
+ <li class="md-nav__item">
1334
+ <a href="../../en/examples-and-fixtures/" class="md-nav__link">
1335
+
1336
+
1337
+
1338
+ <span class="md-ellipsis">
1339
+
1340
+
1341
+ English · Examples and fixtures
1342
+
1343
+
1344
+
1345
+ </span>
1346
+
1347
+
1348
+
1349
+ </a>
1350
+ </li>
1351
+
1352
+
1353
+
1354
+
1355
+
1356
+
1357
+
1358
+
1359
+
1360
+ <li class="md-nav__item">
1361
+ <a href="../../en/recipes/" class="md-nav__link">
1362
+
1363
+
1364
+
1365
+ <span class="md-ellipsis">
1366
+
1367
+
1368
+ English · Recipes
1369
+
1370
+
1371
+
1372
+ </span>
1373
+
1374
+
1375
+
1376
+ </a>
1377
+ </li>
1378
+
1379
+
1380
+
1381
+
1382
+
1383
+
1384
+
1385
+
1386
+
1387
+ <li class="md-nav__item">
1388
+ <a href="../../en/recipes/adopt-existing-repository/" class="md-nav__link">
1389
+
1390
+
1391
+
1392
+ <span class="md-ellipsis">
1393
+
1394
+
1395
+ English · Adopt an existing repository
1396
+
1397
+
1398
+
1399
+ </span>
1400
+
1401
+
1402
+
1403
+ </a>
1404
+ </li>
1405
+
1406
+
1407
+
1408
+
1409
+
1410
+
1411
+
1412
+
1413
+
1414
+ <li class="md-nav__item">
1415
+ <a href="../../en/recipes/safe-filesystem-and-atomic-write/" class="md-nav__link">
1416
+
1417
+
1418
+
1419
+ <span class="md-ellipsis">
1420
+
1421
+
1422
+ English · Safe filesystem and atomic write
1423
+
1424
+
1425
+
1426
+ </span>
1427
+
1428
+
1429
+
1430
+ </a>
1431
+ </li>
1432
+
1433
+
1434
+
1435
+
1436
+
1437
+
1438
+
1439
+
1440
+
1441
+ <li class="md-nav__item">
1442
+ <a href="../../en/recipes/adapter-text-closure/" class="md-nav__link">
1443
+
1444
+
1445
+
1446
+ <span class="md-ellipsis">
1447
+
1448
+
1449
+ English · Adapter text closure
1450
+
1451
+
1452
+
1453
+ </span>
1454
+
1455
+
1456
+
1457
+ </a>
1458
+ </li>
1459
+
1460
+
1461
+
1462
+
1463
+
1464
+
1465
+
1466
+
1467
+
1468
+ <li class="md-nav__item">
1469
+ <a href="../../en/recipes/deterministic-human-report/" class="md-nav__link">
1470
+
1471
+
1472
+
1473
+ <span class="md-ellipsis">
1474
+
1475
+
1476
+ English · Deterministic human report
1477
+
1478
+
1479
+
1480
+ </span>
1481
+
1482
+
1483
+
1484
+ </a>
1485
+ </li>
1486
+
1487
+
1488
+
1489
+
1490
+
1491
+
1492
+
1493
+
1494
+
1495
+ <li class="md-nav__item">
1496
+ <a href="../../en/recipes/durable-local-state/" class="md-nav__link">
1497
+
1498
+
1499
+
1500
+ <span class="md-ellipsis">
1501
+
1502
+
1503
+ English · Durable local state
1504
+
1505
+
1506
+
1507
+ </span>
1508
+
1509
+
1510
+
1511
+ </a>
1512
+ </li>
1513
+
1514
+
1515
+
1516
+
1517
+
1518
+
1519
+
1520
+
1521
+
1522
+ <li class="md-nav__item">
1523
+ <a href="../../en/recipes/host-profile-integration/" class="md-nav__link">
1524
+
1525
+
1526
+
1527
+ <span class="md-ellipsis">
1528
+
1529
+
1530
+ English · Host Profile integration
1531
+
1532
+
1533
+
1534
+ </span>
1535
+
1536
+
1537
+
1538
+ </a>
1539
+ </li>
1540
+
1541
+
1542
+
1543
+
1544
+
1545
+
1546
+
1547
+
1548
+
1549
+ <li class="md-nav__item">
1550
+ <a href="../../en/recipes/domain-schema-validation/" class="md-nav__link">
1551
+
1552
+
1553
+
1554
+ <span class="md-ellipsis">
1555
+
1556
+
1557
+ English · Domain Schema validation
1558
+
1559
+
1560
+
1561
+ </span>
1562
+
1563
+
1564
+
1565
+ </a>
1566
+ </li>
1567
+
1568
+
1569
+
1570
+
1571
+
1572
+
1573
+
1574
+
1575
+
1576
+ <li class="md-nav__item">
1577
+ <a href="../../integration/audit/" class="md-nav__link">
1578
+
1579
+
1580
+
1581
+ <span class="md-ellipsis">
1582
+
1583
+
1584
+ 审计集成 · 入口
1585
+
1586
+
1587
+
1588
+ </span>
1589
+
1590
+
1591
+
1592
+ </a>
1593
+ </li>
1594
+
1595
+
1596
+
1597
+
1598
+
1599
+
1600
+
1601
+
1602
+
1603
+ <li class="md-nav__item">
1604
+ <a href="../../integration/audit/mutation-taxonomy/" class="md-nav__link">
1605
+
1606
+
1607
+
1608
+ <span class="md-ellipsis">
1609
+
1610
+
1611
+ 审计集成 · 变异分类学
1612
+
1613
+
1614
+
1615
+ </span>
1616
+
1617
+
1618
+
1619
+ </a>
1620
+ </li>
1621
+
1622
+
1623
+
1624
+
1625
+
1626
+
1627
+
1628
+
1629
+
1630
+ <li class="md-nav__item">
1631
+ <a href="../../integration/audit/independence/" class="md-nav__link">
1632
+
1633
+
1634
+
1635
+ <span class="md-ellipsis">
1636
+
1637
+
1638
+ 审计集成 · 独立性证明
1639
+
1640
+
1641
+
1642
+ </span>
1643
+
1644
+
1645
+
1646
+ </a>
1647
+ </li>
1648
+
1649
+
1650
+
1651
+
1652
+
1653
+
1654
+
1655
+
1656
+
1657
+ <li class="md-nav__item">
1658
+ <a href="../../integration/audit/version-compatibility/" class="md-nav__link">
1659
+
1660
+
1661
+
1662
+ <span class="md-ellipsis">
1663
+
1664
+
1665
+ 审计集成 · 版本兼容
1666
+
1667
+
1668
+
1669
+ </span>
1670
+
1671
+
1672
+
1673
+ </a>
1674
+ </li>
1675
+
1676
+
1677
+
1678
+
1679
+
1680
+
1681
+
1682
+
1683
+
1684
+ <li class="md-nav__item">
1685
+ <a href="../../integration/audit/failure-evidence/" class="md-nav__link">
1686
+
1687
+
1688
+
1689
+ <span class="md-ellipsis">
1690
+
1691
+
1692
+ 审计集成 · 失败证据与 AUD 码
1693
+
1694
+
1695
+
1696
+ </span>
1697
+
1698
+
1699
+
1700
+ </a>
1701
+ </li>
1702
+
1703
+
1704
+
1705
+ </ul>
1706
+ </nav>
1707
+ </div>
1708
+ </div>
1709
+ </div>
1710
+
1711
+
1712
+
1713
+ <div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" >
1714
+ <div class="md-sidebar__scrollwrap">
1715
+ <div class="md-sidebar__inner">
1716
+
1717
+
1718
+ <nav class="md-nav md-nav--secondary" aria-label="目录">
1719
+
1720
+
1721
+
1722
+
1723
+
1724
+
1725
+ <label class="md-nav__title" for="__toc">
1726
+ <span class="md-nav__icon md-icon"></span>
1727
+ 目录
1728
+ </label>
1729
+ <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
1730
+
1731
+ <li class="md-nav__item">
1732
+ <a href="#Contracts纯函数层" class="md-nav__link">
1733
+ <span class="md-ellipsis">
1734
+
1735
+ Contracts(纯函数层)
1736
+
1737
+ </span>
1738
+ </a>
1739
+
1740
+ </li>
1741
+
1742
+ <li class="md-nav__item">
1743
+ <a href="#Harness机制层受收容" class="md-nav__link">
1744
+ <span class="md-ellipsis">
1745
+
1746
+ Harness(机制层,受收容)
1747
+
1748
+ </span>
1749
+ </a>
1750
+
1751
+ </li>
1752
+
1753
+ <li class="md-nav__item">
1754
+ <a href="#Engineering-Kit工程命令层" class="md-nav__link">
1755
+ <span class="md-ellipsis">
1756
+
1757
+ Engineering Kit(工程命令层)
1758
+
1759
+ </span>
1760
+ </a>
1761
+
1762
+ </li>
1763
+
1764
+ <li class="md-nav__item">
1765
+ <a href="#残余状态合集" class="md-nav__link">
1766
+ <span class="md-ellipsis">
1767
+
1768
+ 残余状态合集
1769
+
1770
+ </span>
1771
+ </a>
1772
+
1773
+ </li>
1774
+
1775
+ <li class="md-nav__item">
1776
+ <a href="#失败后调用方该做什么" class="md-nav__link">
1777
+ <span class="md-ellipsis">
1778
+
1779
+ 失败后调用方该做什么
1780
+
1781
+ </span>
1782
+ </a>
1783
+
1784
+ </li>
1785
+
1786
+ </ul>
1787
+
1788
+ </nav>
1789
+ </div>
1790
+ </div>
1791
+ </div>
1792
+
1793
+
1794
+
1795
+ <div class="md-content" data-md-component="content">
1796
+
1797
+ <article class="md-content__inner md-typeset">
1798
+
1799
+
1800
+
1801
+
1802
+
1803
+ <blockquote>
1804
+ <p><a href="../../en/reference/failure-and-side-effect-matrix/">English</a></p>
1805
+ </blockquote>
1806
+ <h1 id="失败与副作用矩阵">失败与副作用矩阵<a class="headerlink" href="#失败与副作用矩阵" title="Permanent link">&para;</a></h1>
1807
+ <p>本页逐公共入口列出读写、spawn、Git、网络、残余状态与稳定错误码。它服务于调用方在接入前判断风险,并作为 <code>capability-catalog.json</code> 中 <code>sideEffects</code> 与 <code>failureSemantics</code> 字段的人类可读投影。所有事实以真实实现与负例测试为准。</p>
1808
+ <blockquote>
1809
+ <p>符号约定:读=读取文件系统;写=写入文件系统;spawn=启动子进程;Git=读写 Git;网络=访问远端;残余=调用结束后仍留在磁盘/进程中的状态。</p>
1810
+ </blockquote>
1811
+ <h2 id="Contracts纯函数层">Contracts(纯函数层)<a class="headerlink" href="#Contracts纯函数层" title="Permanent link">&para;</a></h2>
1812
+ <table>
1813
+ <thead>
1814
+ <tr>
1815
+ <th>入口</th>
1816
+ <th>读</th>
1817
+ <th>写</th>
1818
+ <th>spawn</th>
1819
+ <th>Git</th>
1820
+ <th>网络</th>
1821
+ <th>残余状态</th>
1822
+ <th>稳定错误码</th>
1823
+ </tr>
1824
+ </thead>
1825
+ <tbody>
1826
+ <tr>
1827
+ <td><code>validateDocument</code></td>
1828
+ <td>否</td>
1829
+ <td>否</td>
1830
+ <td>否</td>
1831
+ <td>否</td>
1832
+ <td>否</td>
1833
+ <td>无(编译缓存仅驻留内存)</td>
1834
+ <td><code>SFC1001</code>/<code>SFC1002</code>/<code>SFC1006</code></td>
1835
+ </tr>
1836
+ <tr>
1837
+ <td><code>compileSchema</code> / <code>detectDialect</code></td>
1838
+ <td>否</td>
1839
+ <td>否</td>
1840
+ <td>否</td>
1841
+ <td>否</td>
1842
+ <td>否</td>
1843
+ <td>无</td>
1844
+ <td><code>SFC1006</code>/<code>SFC1012</code></td>
1845
+ </tr>
1846
+ <tr>
1847
+ <td><code>loadRegistry</code> / <code>findSchemaByObject</code> / <code>findProtocol</code></td>
1848
+ <td>否</td>
1849
+ <td>否</td>
1850
+ <td>否</td>
1851
+ <td>否</td>
1852
+ <td>否</td>
1853
+ <td>无</td>
1854
+ <td><code>SFC1003</code>/<code>SFC1004</code></td>
1855
+ </tr>
1856
+ <tr>
1857
+ <td><code>runChecks</code> / <code>collectUnresolvedRefs</code></td>
1858
+ <td>否</td>
1859
+ <td>否</td>
1860
+ <td>否</td>
1861
+ <td>否</td>
1862
+ <td>否</td>
1863
+ <td>无</td>
1864
+ <td><code>SFC1002</code>–<code>SFC1010</code></td>
1865
+ </tr>
1866
+ <tr>
1867
+ <td><code>verifyAllFixtures</code> / <code>verifyFixture</code></td>
1868
+ <td>否</td>
1869
+ <td>否</td>
1870
+ <td>否? 否</td>
1871
+ <td>否</td>
1872
+ <td>否</td>
1873
+ <td>无</td>
1874
+ <td><code>SFC1010</code></td>
1875
+ </tr>
1876
+ <tr>
1877
+ <td><code>ERROR_CODES</code> / <code>stableError</code></td>
1878
+ <td>否</td>
1879
+ <td>否</td>
1880
+ <td>否</td>
1881
+ <td>否</td>
1882
+ <td>否</td>
1883
+ <td>无</td>
1884
+ <td>冻结登记表,不新增</td>
1885
+ </tr>
1886
+ </tbody>
1887
+ </table>
1888
+ <p>Contracts 全部为纯函数,无文件/Git/网络/进程副作用;错误对象含 <code>stableError</code> 与 <code>details.kind</code>,便于调用方分类。</p>
1889
+ <h2 id="Harness机制层受收容">Harness(机制层,受收容)<a class="headerlink" href="#Harness机制层受收容" title="Permanent link">&para;</a></h2>
1890
+ <table>
1891
+ <thead>
1892
+ <tr>
1893
+ <th>入口</th>
1894
+ <th>读</th>
1895
+ <th>写</th>
1896
+ <th>spawn</th>
1897
+ <th>Git</th>
1898
+ <th>网络</th>
1899
+ <th>残余状态</th>
1900
+ <th>稳定错误码</th>
1901
+ </tr>
1902
+ </thead>
1903
+ <tbody>
1904
+ <tr>
1905
+ <td><code>validateContractDocument</code></td>
1906
+ <td>否</td>
1907
+ <td>否</td>
1908
+ <td>否</td>
1909
+ <td>否</td>
1910
+ <td>否</td>
1911
+ <td>无(校验器缓存内存)</td>
1912
+ <td><code>SFC</code> 校验失败</td>
1913
+ </tr>
1914
+ <tr>
1915
+ <td><code>resolveContained</code> / <code>readFileContained</code></td>
1916
+ <td>是(只读)</td>
1917
+ <td>否</td>
1918
+ <td>否</td>
1919
+ <td>否</td>
1920
+ <td>否</td>
1921
+ <td>无</td>
1922
+ <td><code>SFC2004</code>(<code>path-traversal</code>/<code>symlink-escape</code>/<code>realpath-escape</code>)</td>
1923
+ </tr>
1924
+ <tr>
1925
+ <td><code>writeFileAtomic</code></td>
1926
+ <td>否</td>
1927
+ <td>是(受收容)</td>
1928
+ <td>否</td>
1929
+ <td>否</td>
1930
+ <td>否</td>
1931
+ <td>失败回滚临时文件</td>
1932
+ <td><code>SFC2004</code>(<code>atomic-write-failed</code>)</td>
1933
+ </tr>
1934
+ <tr>
1935
+ <td><code>TemporaryWorkspace</code> / <code>withTemporaryWorkspace</code></td>
1936
+ <td>否</td>
1937
+ <td>是(临时目录)</td>
1938
+ <td>否</td>
1939
+ <td>否</td>
1940
+ <td>否</td>
1941
+ <td>退出时清理临时目录</td>
1942
+ <td><code>SFC2004</code>(<code>workspace-disposed</code>)</td>
1943
+ </tr>
1944
+ <tr>
1945
+ <td><code>computeResourceClosure</code> / <code>digestBytes</code></td>
1946
+ <td>否</td>
1947
+ <td>否</td>
1948
+ <td>否</td>
1949
+ <td>否</td>
1950
+ <td>否</td>
1951
+ <td>无</td>
1952
+ <td><code>SFC</code>(声明/内容违规)</td>
1953
+ </tr>
1954
+ <tr>
1955
+ <td><code>parseRequest</code> / <code>processRequest</code></td>
1956
+ <td>否</td>
1957
+ <td>否</td>
1958
+ <td>否</td>
1959
+ <td>否</td>
1960
+ <td>否</td>
1961
+ <td>无(纯函数管线)</td>
1962
+ <td><code>SFC2004</code></td>
1963
+ </tr>
1964
+ <tr>
1965
+ <td><code>validateReportModel</code> / <code>renderReportMarkdown</code> / <code>buildBinding</code> / <code>checkReport</code></td>
1966
+ <td>否</td>
1967
+ <td>否</td>
1968
+ <td>否</td>
1969
+ <td>否</td>
1970
+ <td>否</td>
1971
+ <td>无(纯函数)</td>
1972
+ <td><code>SFC3001</code>/<code>SFC3002</code>/<code>SFC3003</code></td>
1973
+ </tr>
1974
+ <tr>
1975
+ <td><code>buildAdapterClosure</code> / <code>verifyAdapterBuildManifest</code></td>
1976
+ <td>否</td>
1977
+ <td>否</td>
1978
+ <td>否</td>
1979
+ <td>否</td>
1980
+ <td>否</td>
1981
+ <td>无</td>
1982
+ <td><code>SFC2004</code>(<code>missing-resource</code>)</td>
1983
+ </tr>
1984
+ <tr>
1985
+ <td><code>materializeAdapterBuild</code></td>
1986
+ <td>否</td>
1987
+ <td>是(受收容,sibling + rename)</td>
1988
+ <td>否</td>
1989
+ <td>否</td>
1990
+ <td>否</td>
1991
+ <td>无(原子 rename)</td>
1992
+ <td><code>SFC2004</code></td>
1993
+ </tr>
1994
+ <tr>
1995
+ <td><code>probeVersionVector</code></td>
1996
+ <td>否</td>
1997
+ <td>否</td>
1998
+ <td>默认否(需显式 <code>--allow-host-spawn</code>)</td>
1999
+ <td>否</td>
2000
+ <td>否</td>
2001
+ <td>无</td>
2002
+ <td><code>SFC2004</code></td>
2003
+ </tr>
2004
+ <tr>
2005
+ <td><code>openStateStore</code> / <code>appendEvent</code> / <code>readEvents</code> / <code>writeSnapshot</code></td>
2006
+ <td>是</td>
2007
+ <td>是(事件/快照/锁文件)</td>
2008
+ <td>否</td>
2009
+ <td>否</td>
2010
+ <td>否</td>
2011
+ <td>事件日志 + 锁文件</td>
2012
+ <td><code>SFC2004</code>(<code>store-locked</code>/链断裂)</td>
2013
+ </tr>
2014
+ <tr>
2015
+ <td><code>inspectStateStoreLock</code> / <code>recoverStateStoreLock</code></td>
2016
+ <td>是</td>
2017
+ <td>是(仅恢复写锁)</td>
2018
+ <td>否</td>
2019
+ <td>否</td>
2020
+ <td>否</td>
2021
+ <td>锁文件(单调 fencing)</td>
2022
+ <td><code>SFC2004</code></td>
2023
+ </tr>
2024
+ </tbody>
2025
+ </table>
2026
+ <p>Harness 的 <code>HARNESS_EXCLUSIONS</code> 明确排除 release-state、remote-network-access、business-semantics、workflow-orchestration、model-calls、git-writes。</p>
2027
+ <h2 id="Engineering-Kit工程命令层">Engineering Kit(工程命令层)<a class="headerlink" href="#Engineering-Kit工程命令层" title="Permanent link">&para;</a></h2>
2028
+ <table>
2029
+ <thead>
2030
+ <tr>
2031
+ <th>入口</th>
2032
+ <th>读</th>
2033
+ <th>写</th>
2034
+ <th>spawn</th>
2035
+ <th>Git</th>
2036
+ <th>网络</th>
2037
+ <th>残余状态</th>
2038
+ <th>稳定错误码 / 退出码</th>
2039
+ </tr>
2040
+ </thead>
2041
+ <tbody>
2042
+ <tr>
2043
+ <td><code>scaffoldTarget</code></td>
2044
+ <td>否</td>
2045
+ <td>是(受收容骨架,原子 + 收容)</td>
2046
+ <td>否</td>
2047
+ <td>否</td>
2048
+ <td>否</td>
2049
+ <td>无(失败不留半成品)</td>
2050
+ <td><code>SFC2004</code>(<code>target-not-empty</code>)</td>
2051
+ </tr>
2052
+ <tr>
2053
+ <td><code>planAdoption</code> / <code>buildHandoffDraft</code></td>
2054
+ <td>是</td>
2055
+ <td>否</td>
2056
+ <td>否</td>
2057
+ <td>只读探测</td>
2058
+ <td>否</td>
2059
+ <td>无(stdout 输出)</td>
2060
+ <td><code>SFC</code> 完成判定 false</td>
2061
+ </tr>
2062
+ <tr>
2063
+ <td><code>runProjection</code></td>
2064
+ <td>是(读 manifest)</td>
2065
+ <td>是(受管路径,两阶段)</td>
2066
+ <td>否</td>
2067
+ <td>否</td>
2068
+ <td>否</td>
2069
+ <td>无(失败零写/回滚)</td>
2070
+ <td><code>SFC2004</code>(<code>unauthorized-path</code>/<code>handwritten-overwrite</code>/<code>conflict-drift</code>)</td>
2071
+ </tr>
2072
+ <tr>
2073
+ <td><code>runChecks</code>(<code>check</code>)</td>
2074
+ <td>是</td>
2075
+ <td>否</td>
2076
+ <td>否</td>
2077
+ <td>只读白名单</td>
2078
+ <td>否</td>
2079
+ <td>无</td>
2080
+ <td>退出码 1(发现)/ 2(机制)</td>
2081
+ </tr>
2082
+ <tr>
2083
+ <td><code>renderReportAction</code> / <code>checkReportAction</code></td>
2084
+ <td>是</td>
2085
+ <td>仅 <code>--out</code>/<code>--binding</code></td>
2086
+ <td>否</td>
2087
+ <td>否</td>
2088
+ <td>否</td>
2089
+ <td>默认只写 stdout</td>
2090
+ <td><code>SFC3001</code>/<code>SFC3002</code>/<code>SFC3003</code></td>
2091
+ </tr>
2092
+ <tr>
2093
+ <td><code>probeGitState</code> / <code>probeGitFacts</code></td>
2094
+ <td>是</td>
2095
+ <td>否</td>
2096
+ <td>否</td>
2097
+ <td>只读白名单</td>
2098
+ <td>否</td>
2099
+ <td>无</td>
2100
+ <td><code>SFC</code>(越权参数拒绝)</td>
2101
+ </tr>
2102
+ <tr>
2103
+ <td><code>describeHost</code> / <code>probeHost</code> / <code>buildHostAdapter</code> / <code>planHost</code></td>
2104
+ <td>是</td>
2105
+ <td>build 写(受收容)</td>
2106
+ <td>probe 默认否</td>
2107
+ <td>否</td>
2108
+ <td>否</td>
2109
+ <td>无</td>
2110
+ <td><code>SFC2004</code>;apply 稳定拒绝</td>
2111
+ </tr>
2112
+ <tr>
2113
+ <td><code>loadLicensingProfile</code> / <code>generateLicenseContent</code> 等</td>
2114
+ <td>否</td>
2115
+ <td>否(纯函数生成)</td>
2116
+ <td>否</td>
2117
+ <td>否</td>
2118
+ <td>否</td>
2119
+ <td>无</td>
2120
+ <td><code>SFC</code>(非法 Profile)</td>
2121
+ </tr>
2122
+ <tr>
2123
+ <td><code>checkIdentityDrift</code> / <code>validateIdentityAgainstProfile</code></td>
2124
+ <td>是</td>
2125
+ <td>否</td>
2126
+ <td>否</td>
2127
+ <td>否</td>
2128
+ <td>否</td>
2129
+ <td>无</td>
2130
+ <td>findings</td>
2131
+ </tr>
2132
+ <tr>
2133
+ <td><code>cliMain</code> / <code>runCommand</code></td>
2134
+ <td>依命令</td>
2135
+ <td>依命令</td>
2136
+ <td>依命令</td>
2137
+ <td>依命令</td>
2138
+ <td>否</td>
2139
+ <td>依命令</td>
2140
+ <td>退出码 0/1/2</td>
2141
+ </tr>
2142
+ </tbody>
2143
+ </table>
2144
+ <p>Kit 的 <code>FORBIDDEN_SIDE_EFFECTS</code> 含 git-init/commit/push/tag、publish、remote-write;<code>REFUSED_MUTATION_FLAGS</code>(含 <code>--apply</code>)在 CLI 入口即拒。</p>
2145
+ <h2 id="残余状态合集">残余状态合集<a class="headerlink" href="#残余状态合集" title="Permanent link">&para;</a></h2>
2146
+ <ul>
2147
+ <li>原子写:失败时回滚临时文件,目标目录不留半成品。</li>
2148
+ <li>临时工作区:退出(含异常路径)时清理。</li>
2149
+ <li>状态存储:事件日志是唯一权威,snapshot 为派生缓存;崩溃遗留锁需调用方在 Foundation 外确认旧写者终止后显式恢复,不自动偷锁。</li>
2150
+ <li>投影:任一校验失败整体拒绝、零写入;覆盖既有文件需声明 <code>expect.sha256</code> 前置状态。</li>
2151
+ <li>adopt-plan / check:结构性只读,运行前后字节级零变化。</li>
2152
+ </ul>
2153
+ <h2 id="失败后调用方该做什么">失败后调用方该做什么<a class="headerlink" href="#失败后调用方该做什么" title="Permanent link">&para;</a></h2>
2154
+ <ul>
2155
+ <li>校验失败(<code>SFC1001</code>/<code>SFC2002</code>/<code>SFC2003</code>):检查输入是否满足目标 Schema 或参数合同,不重试已被冻结拒绝的登记。</li>
2156
+ <li>收容失败(<code>SFC2004</code> + <code>path-traversal</code> 等):确认根目录与路径是否越界,不要把业务选择规则塞进 Foundation。</li>
2157
+ <li>状态锁冲突(<code>store-locked</code>):在 Foundation 之外确认旧写者已终止,再用精确匹配的 owner/fencing 调用恢复。</li>
2158
+ <li>check 发现(退出码 1):处置发现项,Kit 不自动修复。</li>
2159
+ </ul>
2160
+
2161
+
2162
+
2163
+
2164
+
2165
+
2166
+
2167
+
2168
+
2169
+
2170
+
2171
+
2172
+
2173
+ </article>
2174
+ </div>
2175
+
2176
+
2177
+ <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script>
2178
+ </div>
2179
+
2180
+ </main>
2181
+
2182
+ <footer class="md-footer">
2183
+
2184
+ <div class="md-footer-meta md-typeset">
2185
+ <div class="md-footer-meta__inner md-grid">
2186
+ <div class="md-copyright">
2187
+
2188
+
2189
+ Made with
2190
+ <a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener">
2191
+ Material for MkDocs
2192
+ </a>
2193
+
2194
+ </div>
2195
+
2196
+ </div>
2197
+ </div>
2198
+ </footer>
2199
+
2200
+ </div>
2201
+ <div class="md-dialog" data-md-component="dialog">
2202
+ <div class="md-dialog__inner md-typeset"></div>
2203
+ </div>
2204
+
2205
+
2206
+
2207
+
2208
+
2209
+ <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>
2210
+
2211
+
2212
+ <script src="../../assets/javascripts/bundle.d7400e89.min.js"></script>
2213
+
2214
+
2215
+ </body>
2216
+ </html>