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
@@ -0,0 +1,1871 @@
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/examples-and-fixtures/">
14
+
15
+
16
+ <link rel="prev" href="../reference/api/engineering-kit/">
17
+
18
+
19
+ <link rel="next" href="../recipes/">
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>中文 · 样例与 Fixture - 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="#样例与-Fixture" 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
+ 中文 · 样例与 Fixture
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="../reference/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
+ <li class="md-nav__item">
557
+ <a href="../reference/failure-and-side-effect-matrix/" class="md-nav__link">
558
+
559
+
560
+
561
+ <span class="md-ellipsis">
562
+
563
+
564
+ 中文 · 失败与副作用
565
+
566
+
567
+
568
+ </span>
569
+
570
+
571
+
572
+ </a>
573
+ </li>
574
+
575
+
576
+
577
+
578
+
579
+
580
+
581
+
582
+
583
+ <li class="md-nav__item">
584
+ <a href="../reference/api/" class="md-nav__link">
585
+
586
+
587
+
588
+ <span class="md-ellipsis">
589
+
590
+
591
+ 中文 · API 参考
592
+
593
+
594
+
595
+ </span>
596
+
597
+
598
+
599
+ </a>
600
+ </li>
601
+
602
+
603
+
604
+
605
+
606
+
607
+
608
+
609
+
610
+ <li class="md-nav__item">
611
+ <a href="../reference/api/contracts/" class="md-nav__link">
612
+
613
+
614
+
615
+ <span class="md-ellipsis">
616
+
617
+
618
+ 中文 · Contracts API
619
+
620
+
621
+
622
+ </span>
623
+
624
+
625
+
626
+ </a>
627
+ </li>
628
+
629
+
630
+
631
+
632
+
633
+
634
+
635
+
636
+
637
+ <li class="md-nav__item">
638
+ <a href="../reference/api/harness/" class="md-nav__link">
639
+
640
+
641
+
642
+ <span class="md-ellipsis">
643
+
644
+
645
+ 中文 · Harness API
646
+
647
+
648
+
649
+ </span>
650
+
651
+
652
+
653
+ </a>
654
+ </li>
655
+
656
+
657
+
658
+
659
+
660
+
661
+
662
+
663
+
664
+ <li class="md-nav__item">
665
+ <a href="../reference/api/engineering-kit/" class="md-nav__link">
666
+
667
+
668
+
669
+ <span class="md-ellipsis">
670
+
671
+
672
+ 中文 · Engineering Kit API
673
+
674
+
675
+
676
+ </span>
677
+
678
+
679
+
680
+ </a>
681
+ </li>
682
+
683
+
684
+
685
+
686
+
687
+
688
+
689
+
690
+
691
+
692
+
693
+ <li class="md-nav__item md-nav__item--active">
694
+
695
+ <input class="md-nav__toggle md-toggle" type="checkbox" id="__toc">
696
+
697
+
698
+
699
+
700
+
701
+ <label class="md-nav__link md-nav__link--active" for="__toc">
702
+
703
+
704
+
705
+ <span class="md-ellipsis">
706
+
707
+
708
+ 中文 · 样例与 Fixture
709
+
710
+
711
+
712
+ </span>
713
+
714
+
715
+
716
+ <span class="md-nav__icon md-icon"></span>
717
+ </label>
718
+
719
+ <a href="./" class="md-nav__link md-nav__link--active">
720
+
721
+
722
+
723
+ <span class="md-ellipsis">
724
+
725
+
726
+ 中文 · 样例与 Fixture
727
+
728
+
729
+
730
+ </span>
731
+
732
+
733
+
734
+ </a>
735
+
736
+
737
+
738
+ <nav class="md-nav md-nav--secondary" aria-label="目录">
739
+
740
+
741
+
742
+
743
+
744
+
745
+ <label class="md-nav__title" for="__toc">
746
+ <span class="md-nav__icon md-icon"></span>
747
+ 目录
748
+ </label>
749
+ <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
750
+
751
+ <li class="md-nav__item">
752
+ <a href="#fixture-的目的" class="md-nav__link">
753
+ <span class="md-ellipsis">
754
+
755
+ fixture 的目的
756
+
757
+ </span>
758
+ </a>
759
+
760
+ </li>
761
+
762
+ <li class="md-nav__item">
763
+ <a href="#运行入口" class="md-nav__link">
764
+ <span class="md-ellipsis">
765
+
766
+ 运行入口
767
+
768
+ </span>
769
+ </a>
770
+
771
+ </li>
772
+
773
+ <li class="md-nav__item">
774
+ <a href="#fixture-能否作为业务-oracle" class="md-nav__link">
775
+ <span class="md-ellipsis">
776
+
777
+ fixture 能否作为业务 oracle
778
+
779
+ </span>
780
+ </a>
781
+
782
+ </li>
783
+
784
+ <li class="md-nav__item">
785
+ <a href="#公开范围" class="md-nav__link">
786
+ <span class="md-ellipsis">
787
+
788
+ 公开范围
789
+
790
+ </span>
791
+ </a>
792
+
793
+ </li>
794
+
795
+ </ul>
796
+
797
+ </nav>
798
+
799
+ </li>
800
+
801
+
802
+
803
+
804
+
805
+
806
+
807
+
808
+
809
+ <li class="md-nav__item">
810
+ <a href="../recipes/" class="md-nav__link">
811
+
812
+
813
+
814
+ <span class="md-ellipsis">
815
+
816
+
817
+ 中文 · Recipes
818
+
819
+
820
+
821
+ </span>
822
+
823
+
824
+
825
+ </a>
826
+ </li>
827
+
828
+
829
+
830
+
831
+
832
+
833
+
834
+
835
+
836
+ <li class="md-nav__item">
837
+ <a href="../recipes/adopt-existing-repository/" class="md-nav__link">
838
+
839
+
840
+
841
+ <span class="md-ellipsis">
842
+
843
+
844
+ 中文 · 采用存量仓库
845
+
846
+
847
+
848
+ </span>
849
+
850
+
851
+
852
+ </a>
853
+ </li>
854
+
855
+
856
+
857
+
858
+
859
+
860
+
861
+
862
+
863
+ <li class="md-nav__item">
864
+ <a href="../recipes/safe-filesystem-and-atomic-write/" class="md-nav__link">
865
+
866
+
867
+
868
+ <span class="md-ellipsis">
869
+
870
+
871
+ 中文 · 安全文件系统与原子写
872
+
873
+
874
+
875
+ </span>
876
+
877
+
878
+
879
+ </a>
880
+ </li>
881
+
882
+
883
+
884
+
885
+
886
+
887
+
888
+
889
+
890
+ <li class="md-nav__item">
891
+ <a href="../recipes/adapter-text-closure/" class="md-nav__link">
892
+
893
+
894
+
895
+ <span class="md-ellipsis">
896
+
897
+
898
+ 中文 · Adapter 文本闭包
899
+
900
+
901
+
902
+ </span>
903
+
904
+
905
+
906
+ </a>
907
+ </li>
908
+
909
+
910
+
911
+
912
+
913
+
914
+
915
+
916
+
917
+ <li class="md-nav__item">
918
+ <a href="../recipes/deterministic-human-report/" class="md-nav__link">
919
+
920
+
921
+
922
+ <span class="md-ellipsis">
923
+
924
+
925
+ 中文 · 确定性人类报告
926
+
927
+
928
+
929
+ </span>
930
+
931
+
932
+
933
+ </a>
934
+ </li>
935
+
936
+
937
+
938
+
939
+
940
+
941
+
942
+
943
+
944
+ <li class="md-nav__item">
945
+ <a href="../recipes/durable-local-state/" class="md-nav__link">
946
+
947
+
948
+
949
+ <span class="md-ellipsis">
950
+
951
+
952
+ 中文 · 持久本地状态
953
+
954
+
955
+
956
+ </span>
957
+
958
+
959
+
960
+ </a>
961
+ </li>
962
+
963
+
964
+
965
+
966
+
967
+
968
+
969
+
970
+
971
+ <li class="md-nav__item">
972
+ <a href="../recipes/host-profile-integration/" class="md-nav__link">
973
+
974
+
975
+
976
+ <span class="md-ellipsis">
977
+
978
+
979
+ 中文 · 宿主 Profile 集成
980
+
981
+
982
+
983
+ </span>
984
+
985
+
986
+
987
+ </a>
988
+ </li>
989
+
990
+
991
+
992
+
993
+
994
+
995
+
996
+
997
+
998
+ <li class="md-nav__item">
999
+ <a href="../recipes/domain-schema-validation/" class="md-nav__link">
1000
+
1001
+
1002
+
1003
+ <span class="md-ellipsis">
1004
+
1005
+
1006
+ 中文 · 领域 Schema 校验
1007
+
1008
+
1009
+
1010
+ </span>
1011
+
1012
+
1013
+
1014
+ </a>
1015
+ </li>
1016
+
1017
+
1018
+
1019
+
1020
+
1021
+
1022
+
1023
+
1024
+
1025
+ <li class="md-nav__item">
1026
+ <a href="../en/" class="md-nav__link">
1027
+
1028
+
1029
+
1030
+ <span class="md-ellipsis">
1031
+
1032
+
1033
+ English · Home
1034
+
1035
+
1036
+
1037
+ </span>
1038
+
1039
+
1040
+
1041
+ </a>
1042
+ </li>
1043
+
1044
+
1045
+
1046
+
1047
+
1048
+
1049
+
1050
+
1051
+
1052
+ <li class="md-nav__item">
1053
+ <a href="../en/quickstart/" class="md-nav__link">
1054
+
1055
+
1056
+
1057
+ <span class="md-ellipsis">
1058
+
1059
+
1060
+ English · Quickstart
1061
+
1062
+
1063
+
1064
+ </span>
1065
+
1066
+
1067
+
1068
+ </a>
1069
+ </li>
1070
+
1071
+
1072
+
1073
+
1074
+
1075
+
1076
+
1077
+
1078
+
1079
+ <li class="md-nav__item">
1080
+ <a href="../en/help/" class="md-nav__link">
1081
+
1082
+
1083
+
1084
+ <span class="md-ellipsis">
1085
+
1086
+
1087
+ English · Capabilities and diagnostics
1088
+
1089
+
1090
+
1091
+ </span>
1092
+
1093
+
1094
+
1095
+ </a>
1096
+ </li>
1097
+
1098
+
1099
+
1100
+
1101
+
1102
+
1103
+
1104
+
1105
+
1106
+ <li class="md-nav__item">
1107
+ <a href="../en/architecture/" class="md-nav__link">
1108
+
1109
+
1110
+
1111
+ <span class="md-ellipsis">
1112
+
1113
+
1114
+ English · Architecture
1115
+
1116
+
1117
+
1118
+ </span>
1119
+
1120
+
1121
+
1122
+ </a>
1123
+ </li>
1124
+
1125
+
1126
+
1127
+
1128
+
1129
+
1130
+
1131
+
1132
+
1133
+ <li class="md-nav__item">
1134
+ <a href="../en/migration/" class="md-nav__link">
1135
+
1136
+
1137
+
1138
+ <span class="md-ellipsis">
1139
+
1140
+
1141
+ English · Migration
1142
+
1143
+
1144
+
1145
+ </span>
1146
+
1147
+
1148
+
1149
+ </a>
1150
+ </li>
1151
+
1152
+
1153
+
1154
+
1155
+
1156
+
1157
+
1158
+
1159
+
1160
+ <li class="md-nav__item">
1161
+ <a href="../en/licensing/" class="md-nav__link">
1162
+
1163
+
1164
+
1165
+ <span class="md-ellipsis">
1166
+
1167
+
1168
+ English · Licensing
1169
+
1170
+
1171
+
1172
+ </span>
1173
+
1174
+
1175
+
1176
+ </a>
1177
+ </li>
1178
+
1179
+
1180
+
1181
+
1182
+
1183
+
1184
+
1185
+
1186
+
1187
+ <li class="md-nav__item">
1188
+ <a href="../en/agents/" class="md-nav__link">
1189
+
1190
+
1191
+
1192
+ <span class="md-ellipsis">
1193
+
1194
+
1195
+ English · Agent entry
1196
+
1197
+
1198
+
1199
+ </span>
1200
+
1201
+
1202
+
1203
+ </a>
1204
+ </li>
1205
+
1206
+
1207
+
1208
+
1209
+
1210
+
1211
+
1212
+
1213
+
1214
+ <li class="md-nav__item">
1215
+ <a href="../en/agents/architecture-routing/" class="md-nav__link">
1216
+
1217
+
1218
+
1219
+ <span class="md-ellipsis">
1220
+
1221
+
1222
+ English · Architecture routing
1223
+
1224
+
1225
+
1226
+ </span>
1227
+
1228
+
1229
+
1230
+ </a>
1231
+ </li>
1232
+
1233
+
1234
+
1235
+
1236
+
1237
+
1238
+
1239
+
1240
+
1241
+ <li class="md-nav__item">
1242
+ <a href="../en/reference/compatibility/" class="md-nav__link">
1243
+
1244
+
1245
+
1246
+ <span class="md-ellipsis">
1247
+
1248
+
1249
+ English · Compatibility
1250
+
1251
+
1252
+
1253
+ </span>
1254
+
1255
+
1256
+
1257
+ </a>
1258
+ </li>
1259
+
1260
+
1261
+
1262
+
1263
+
1264
+
1265
+
1266
+
1267
+
1268
+ <li class="md-nav__item">
1269
+ <a href="../en/reference/failure-and-side-effect-matrix/" class="md-nav__link">
1270
+
1271
+
1272
+
1273
+ <span class="md-ellipsis">
1274
+
1275
+
1276
+ English · Failures and side effects
1277
+
1278
+
1279
+
1280
+ </span>
1281
+
1282
+
1283
+
1284
+ </a>
1285
+ </li>
1286
+
1287
+
1288
+
1289
+
1290
+
1291
+
1292
+
1293
+
1294
+
1295
+ <li class="md-nav__item">
1296
+ <a href="../en/reference/api/" class="md-nav__link">
1297
+
1298
+
1299
+
1300
+ <span class="md-ellipsis">
1301
+
1302
+
1303
+ English · API reference
1304
+
1305
+
1306
+
1307
+ </span>
1308
+
1309
+
1310
+
1311
+ </a>
1312
+ </li>
1313
+
1314
+
1315
+
1316
+
1317
+
1318
+
1319
+
1320
+
1321
+
1322
+ <li class="md-nav__item">
1323
+ <a href="../en/examples-and-fixtures/" class="md-nav__link">
1324
+
1325
+
1326
+
1327
+ <span class="md-ellipsis">
1328
+
1329
+
1330
+ English · Examples and fixtures
1331
+
1332
+
1333
+
1334
+ </span>
1335
+
1336
+
1337
+
1338
+ </a>
1339
+ </li>
1340
+
1341
+
1342
+
1343
+
1344
+
1345
+
1346
+
1347
+
1348
+
1349
+ <li class="md-nav__item">
1350
+ <a href="../en/recipes/" class="md-nav__link">
1351
+
1352
+
1353
+
1354
+ <span class="md-ellipsis">
1355
+
1356
+
1357
+ English · Recipes
1358
+
1359
+
1360
+
1361
+ </span>
1362
+
1363
+
1364
+
1365
+ </a>
1366
+ </li>
1367
+
1368
+
1369
+
1370
+
1371
+
1372
+
1373
+
1374
+
1375
+
1376
+ <li class="md-nav__item">
1377
+ <a href="../en/recipes/adopt-existing-repository/" class="md-nav__link">
1378
+
1379
+
1380
+
1381
+ <span class="md-ellipsis">
1382
+
1383
+
1384
+ English · Adopt an existing repository
1385
+
1386
+
1387
+
1388
+ </span>
1389
+
1390
+
1391
+
1392
+ </a>
1393
+ </li>
1394
+
1395
+
1396
+
1397
+
1398
+
1399
+
1400
+
1401
+
1402
+
1403
+ <li class="md-nav__item">
1404
+ <a href="../en/recipes/safe-filesystem-and-atomic-write/" class="md-nav__link">
1405
+
1406
+
1407
+
1408
+ <span class="md-ellipsis">
1409
+
1410
+
1411
+ English · Safe filesystem and atomic write
1412
+
1413
+
1414
+
1415
+ </span>
1416
+
1417
+
1418
+
1419
+ </a>
1420
+ </li>
1421
+
1422
+
1423
+
1424
+
1425
+
1426
+
1427
+
1428
+
1429
+
1430
+ <li class="md-nav__item">
1431
+ <a href="../en/recipes/adapter-text-closure/" class="md-nav__link">
1432
+
1433
+
1434
+
1435
+ <span class="md-ellipsis">
1436
+
1437
+
1438
+ English · Adapter text closure
1439
+
1440
+
1441
+
1442
+ </span>
1443
+
1444
+
1445
+
1446
+ </a>
1447
+ </li>
1448
+
1449
+
1450
+
1451
+
1452
+
1453
+
1454
+
1455
+
1456
+
1457
+ <li class="md-nav__item">
1458
+ <a href="../en/recipes/deterministic-human-report/" class="md-nav__link">
1459
+
1460
+
1461
+
1462
+ <span class="md-ellipsis">
1463
+
1464
+
1465
+ English · Deterministic human report
1466
+
1467
+
1468
+
1469
+ </span>
1470
+
1471
+
1472
+
1473
+ </a>
1474
+ </li>
1475
+
1476
+
1477
+
1478
+
1479
+
1480
+
1481
+
1482
+
1483
+
1484
+ <li class="md-nav__item">
1485
+ <a href="../en/recipes/durable-local-state/" class="md-nav__link">
1486
+
1487
+
1488
+
1489
+ <span class="md-ellipsis">
1490
+
1491
+
1492
+ English · Durable local state
1493
+
1494
+
1495
+
1496
+ </span>
1497
+
1498
+
1499
+
1500
+ </a>
1501
+ </li>
1502
+
1503
+
1504
+
1505
+
1506
+
1507
+
1508
+
1509
+
1510
+
1511
+ <li class="md-nav__item">
1512
+ <a href="../en/recipes/host-profile-integration/" class="md-nav__link">
1513
+
1514
+
1515
+
1516
+ <span class="md-ellipsis">
1517
+
1518
+
1519
+ English · Host Profile integration
1520
+
1521
+
1522
+
1523
+ </span>
1524
+
1525
+
1526
+
1527
+ </a>
1528
+ </li>
1529
+
1530
+
1531
+
1532
+
1533
+
1534
+
1535
+
1536
+
1537
+
1538
+ <li class="md-nav__item">
1539
+ <a href="../en/recipes/domain-schema-validation/" class="md-nav__link">
1540
+
1541
+
1542
+
1543
+ <span class="md-ellipsis">
1544
+
1545
+
1546
+ English · Domain Schema validation
1547
+
1548
+
1549
+
1550
+ </span>
1551
+
1552
+
1553
+
1554
+ </a>
1555
+ </li>
1556
+
1557
+
1558
+
1559
+
1560
+
1561
+
1562
+
1563
+
1564
+
1565
+ <li class="md-nav__item">
1566
+ <a href="../integration/audit/" class="md-nav__link">
1567
+
1568
+
1569
+
1570
+ <span class="md-ellipsis">
1571
+
1572
+
1573
+ 审计集成 · 入口
1574
+
1575
+
1576
+
1577
+ </span>
1578
+
1579
+
1580
+
1581
+ </a>
1582
+ </li>
1583
+
1584
+
1585
+
1586
+
1587
+
1588
+
1589
+
1590
+
1591
+
1592
+ <li class="md-nav__item">
1593
+ <a href="../integration/audit/mutation-taxonomy/" class="md-nav__link">
1594
+
1595
+
1596
+
1597
+ <span class="md-ellipsis">
1598
+
1599
+
1600
+ 审计集成 · 变异分类学
1601
+
1602
+
1603
+
1604
+ </span>
1605
+
1606
+
1607
+
1608
+ </a>
1609
+ </li>
1610
+
1611
+
1612
+
1613
+
1614
+
1615
+
1616
+
1617
+
1618
+
1619
+ <li class="md-nav__item">
1620
+ <a href="../integration/audit/independence/" class="md-nav__link">
1621
+
1622
+
1623
+
1624
+ <span class="md-ellipsis">
1625
+
1626
+
1627
+ 审计集成 · 独立性证明
1628
+
1629
+
1630
+
1631
+ </span>
1632
+
1633
+
1634
+
1635
+ </a>
1636
+ </li>
1637
+
1638
+
1639
+
1640
+
1641
+
1642
+
1643
+
1644
+
1645
+
1646
+ <li class="md-nav__item">
1647
+ <a href="../integration/audit/version-compatibility/" class="md-nav__link">
1648
+
1649
+
1650
+
1651
+ <span class="md-ellipsis">
1652
+
1653
+
1654
+ 审计集成 · 版本兼容
1655
+
1656
+
1657
+
1658
+ </span>
1659
+
1660
+
1661
+
1662
+ </a>
1663
+ </li>
1664
+
1665
+
1666
+
1667
+
1668
+
1669
+
1670
+
1671
+
1672
+
1673
+ <li class="md-nav__item">
1674
+ <a href="../integration/audit/failure-evidence/" class="md-nav__link">
1675
+
1676
+
1677
+
1678
+ <span class="md-ellipsis">
1679
+
1680
+
1681
+ 审计集成 · 失败证据与 AUD 码
1682
+
1683
+
1684
+
1685
+ </span>
1686
+
1687
+
1688
+
1689
+ </a>
1690
+ </li>
1691
+
1692
+
1693
+
1694
+ </ul>
1695
+ </nav>
1696
+ </div>
1697
+ </div>
1698
+ </div>
1699
+
1700
+
1701
+
1702
+ <div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" >
1703
+ <div class="md-sidebar__scrollwrap">
1704
+ <div class="md-sidebar__inner">
1705
+
1706
+
1707
+ <nav class="md-nav md-nav--secondary" aria-label="目录">
1708
+
1709
+
1710
+
1711
+
1712
+
1713
+
1714
+ <label class="md-nav__title" for="__toc">
1715
+ <span class="md-nav__icon md-icon"></span>
1716
+ 目录
1717
+ </label>
1718
+ <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
1719
+
1720
+ <li class="md-nav__item">
1721
+ <a href="#fixture-的目的" class="md-nav__link">
1722
+ <span class="md-ellipsis">
1723
+
1724
+ fixture 的目的
1725
+
1726
+ </span>
1727
+ </a>
1728
+
1729
+ </li>
1730
+
1731
+ <li class="md-nav__item">
1732
+ <a href="#运行入口" class="md-nav__link">
1733
+ <span class="md-ellipsis">
1734
+
1735
+ 运行入口
1736
+
1737
+ </span>
1738
+ </a>
1739
+
1740
+ </li>
1741
+
1742
+ <li class="md-nav__item">
1743
+ <a href="#fixture-能否作为业务-oracle" class="md-nav__link">
1744
+ <span class="md-ellipsis">
1745
+
1746
+ fixture 能否作为业务 oracle
1747
+
1748
+ </span>
1749
+ </a>
1750
+
1751
+ </li>
1752
+
1753
+ <li class="md-nav__item">
1754
+ <a href="#公开范围" class="md-nav__link">
1755
+ <span class="md-ellipsis">
1756
+
1757
+ 公开范围
1758
+
1759
+ </span>
1760
+ </a>
1761
+
1762
+ </li>
1763
+
1764
+ </ul>
1765
+
1766
+ </nav>
1767
+ </div>
1768
+ </div>
1769
+ </div>
1770
+
1771
+
1772
+
1773
+ <div class="md-content" data-md-component="content">
1774
+
1775
+ <article class="md-content__inner md-typeset">
1776
+
1777
+
1778
+
1779
+
1780
+
1781
+ <h1 id="样例与-Fixture">样例与 Fixture<a class="headerlink" href="#样例与-Fixture" title="Permanent link">&para;</a></h1>
1782
+ <p>本页说明 Foundation 中 fixture 的目的、运行入口,以及它能否作为业务 oracle(判定依据)。结论先行:fixture 只证明结构契约,不证明业务语义。</p>
1783
+ <h2 id="fixture-的目的">fixture 的目的<a class="headerlink" href="#fixture-的目的" title="Permanent link">&para;</a></h2>
1784
+ <p>fixture 回答一个问题——「这份契约对象/SPI 在给定输入下是否产生声明的行为」。它分三类:</p>
1785
+ <ul>
1786
+ <li><strong>正例(positive)</strong>:给定合法输入,校验/机制应通过。</li>
1787
+ <li><strong>反例(negative)</strong>:给定非法输入,必须产生稳定失败码(如 <code>SFC1001</code>/<code>SFC1010</code>)。</li>
1788
+ <li><strong>方言边界(dialect-boundary)</strong>:在 draft-07 与 2020-12 双方言交界处的预期行为。</li>
1789
+ </ul>
1790
+ <p>fixture 是完全虚构数据,不含真实业务、私有 Profile、用户路径或凭据。</p>
1791
+ <h2 id="运行入口">运行入口<a class="headerlink" href="#运行入口" title="Permanent link">&para;</a></h2>
1792
+ <ul>
1793
+ <li>Contracts fixture:<code>packages/skill-family-contracts/test/fixtures.test.mjs</code> 机械重放 <code>src/fixtures/&lt;contract&gt;/</code> 的期望,行为不符报 <code>SFC1010</code>。</li>
1794
+ <li>Profile SPI 符合性:<code>fixtures/generic-profile-extension-conformance/verify.mjs</code>(只读校验)与 <code>leak-scan.mjs</code>(泄漏扫描)。</li>
1795
+ <li>骨架精确合同:<code>fixtures/scaffold-conformance/verify.mjs</code>。</li>
1796
+ <li>采用危害类:<code>fixtures/adoption/cases/</code> 以字节级前后快照证明 <code>adopt-plan</code> 只读。</li>
1797
+ </ul>
1798
+ <p>以上入口均为只读或自含,不写调用方仓、不触碰远端。</p>
1799
+ <h2 id="fixture-能否作为业务-oracle">fixture 能否作为业务 oracle<a class="headerlink" href="#fixture-能否作为业务-oracle" title="Permanent link">&para;</a></h2>
1800
+ <p>不能。原因:</p>
1801
+ <ul>
1802
+ <li>fixture 只覆盖结构契约与机制边界,不覆盖领域语义、业务状态机或审计结论。</li>
1803
+ <li>审计语义与最终接受/拒绝属外部独立审阅,Foundation 只提供审计表面(canonical JSON + sha256 摘要,见 <code>foundation.contracts.audit-surface</code>)。</li>
1804
+ <li>文档体系明确:普通正文语义正确性由外部审阅负责,仓内门禁只证明机器事实与字节/结构一致性。</li>
1805
+ </ul>
1806
+ <blockquote>
1807
+ <p>因此,把 fixture 当作业务正确性的判据是误用。它证明「契约被满足」,不证明「业务是对的」。</p>
1808
+ </blockquote>
1809
+ <h2 id="公开范围">公开范围<a class="headerlink" href="#公开范围" title="Permanent link">&para;</a></h2>
1810
+ <ul>
1811
+ <li>Profile:<code>profiles/public-plugin</code>(公开或完全虚构样例)。</li>
1812
+ <li>fixture:<code>fixtures/generic-profile-extension-conformance</code>、<code>fixtures/scaffold-conformance</code>、<code>fixtures/licensing-profile-conformance</code>、<code>fixtures/adoption</code>、<code>fixtures/m0-consumer</code>。</li>
1813
+ </ul>
1814
+ <p>其余私有或消费者 fixture 不进入公开文档;私有 Profile、产品数据、用户路径、账号、token 或运行日志一律不写入公开 fixture。</p>
1815
+
1816
+
1817
+
1818
+
1819
+
1820
+
1821
+
1822
+
1823
+
1824
+
1825
+
1826
+
1827
+
1828
+ </article>
1829
+ </div>
1830
+
1831
+
1832
+ <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script>
1833
+ </div>
1834
+
1835
+ </main>
1836
+
1837
+ <footer class="md-footer">
1838
+
1839
+ <div class="md-footer-meta md-typeset">
1840
+ <div class="md-footer-meta__inner md-grid">
1841
+ <div class="md-copyright">
1842
+
1843
+
1844
+ Made with
1845
+ <a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener">
1846
+ Material for MkDocs
1847
+ </a>
1848
+
1849
+ </div>
1850
+
1851
+ </div>
1852
+ </div>
1853
+ </footer>
1854
+
1855
+ </div>
1856
+ <div class="md-dialog" data-md-component="dialog">
1857
+ <div class="md-dialog__inner md-typeset"></div>
1858
+ </div>
1859
+
1860
+
1861
+
1862
+
1863
+
1864
+ <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>
1865
+
1866
+
1867
+ <script src="../assets/javascripts/bundle.d7400e89.min.js"></script>
1868
+
1869
+
1870
+ </body>
1871
+ </html>