skill-family-engineering-kit 0.1.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 (80) hide show
  1. package/CODE_OF_CONDUCT.md +131 -0
  2. package/CONTRIBUTING.md +69 -0
  3. package/LICENSE +201 -0
  4. package/README.md +74 -0
  5. package/SECURITY.md +34 -0
  6. package/data/licensing/registry.json +211 -0
  7. package/data/licensing/schema.json +207 -0
  8. package/docs/.nojekyll +0 -0
  9. package/docs/404.html +613 -0
  10. package/docs/architecture/index.html +904 -0
  11. package/docs/assets/images/favicon.png +0 -0
  12. package/docs/assets/javascripts/bundle.d7400e89.min.js +16 -0
  13. package/docs/assets/javascripts/lunr/min/lunr.ar.min.js +1 -0
  14. package/docs/assets/javascripts/lunr/min/lunr.da.min.js +18 -0
  15. package/docs/assets/javascripts/lunr/min/lunr.de.min.js +18 -0
  16. package/docs/assets/javascripts/lunr/min/lunr.du.min.js +18 -0
  17. package/docs/assets/javascripts/lunr/min/lunr.el.min.js +1 -0
  18. package/docs/assets/javascripts/lunr/min/lunr.es.min.js +18 -0
  19. package/docs/assets/javascripts/lunr/min/lunr.fi.min.js +18 -0
  20. package/docs/assets/javascripts/lunr/min/lunr.fr.min.js +18 -0
  21. package/docs/assets/javascripts/lunr/min/lunr.he.min.js +1 -0
  22. package/docs/assets/javascripts/lunr/min/lunr.hi.min.js +1 -0
  23. package/docs/assets/javascripts/lunr/min/lunr.hu.min.js +18 -0
  24. package/docs/assets/javascripts/lunr/min/lunr.hy.min.js +1 -0
  25. package/docs/assets/javascripts/lunr/min/lunr.it.min.js +18 -0
  26. package/docs/assets/javascripts/lunr/min/lunr.ja.min.js +1 -0
  27. package/docs/assets/javascripts/lunr/min/lunr.jp.min.js +1 -0
  28. package/docs/assets/javascripts/lunr/min/lunr.kn.min.js +1 -0
  29. package/docs/assets/javascripts/lunr/min/lunr.ko.min.js +1 -0
  30. package/docs/assets/javascripts/lunr/min/lunr.multi.min.js +1 -0
  31. package/docs/assets/javascripts/lunr/min/lunr.nl.min.js +18 -0
  32. package/docs/assets/javascripts/lunr/min/lunr.no.min.js +18 -0
  33. package/docs/assets/javascripts/lunr/min/lunr.pt.min.js +18 -0
  34. package/docs/assets/javascripts/lunr/min/lunr.ro.min.js +18 -0
  35. package/docs/assets/javascripts/lunr/min/lunr.ru.min.js +18 -0
  36. package/docs/assets/javascripts/lunr/min/lunr.sa.min.js +1 -0
  37. package/docs/assets/javascripts/lunr/min/lunr.stemmer.support.min.js +1 -0
  38. package/docs/assets/javascripts/lunr/min/lunr.sv.min.js +18 -0
  39. package/docs/assets/javascripts/lunr/min/lunr.ta.min.js +1 -0
  40. package/docs/assets/javascripts/lunr/min/lunr.te.min.js +1 -0
  41. package/docs/assets/javascripts/lunr/min/lunr.th.min.js +1 -0
  42. package/docs/assets/javascripts/lunr/min/lunr.tr.min.js +18 -0
  43. package/docs/assets/javascripts/lunr/min/lunr.vi.min.js +1 -0
  44. package/docs/assets/javascripts/lunr/min/lunr.zh.min.js +1 -0
  45. package/docs/assets/javascripts/lunr/tinyseg.js +206 -0
  46. package/docs/assets/javascripts/lunr/wordcut.js +6708 -0
  47. package/docs/assets/javascripts/workers/search.2c215733.min.js +42 -0
  48. package/docs/assets/stylesheets/main.ec1eaa64.min.css +1 -0
  49. package/docs/assets/stylesheets/palette.ab4e12ef.min.css +1 -0
  50. package/docs/git-lifecycle/index.html +976 -0
  51. package/docs/help/index.html +907 -0
  52. package/docs/index.html +837 -0
  53. package/docs/integration/audit/baseline/audit-codes.json +62 -0
  54. package/docs/integration/audit/failure-evidence/index.html +872 -0
  55. package/docs/integration/audit/independence/index.html +841 -0
  56. package/docs/integration/audit/index.html +826 -0
  57. package/docs/integration/audit/mutation-taxonomy/index.html +1022 -0
  58. package/docs/integration/audit/schemas/audit-evidence.schema.json +182 -0
  59. package/docs/integration/audit/version-compatibility/index.html +845 -0
  60. package/docs/migration/index.html +1213 -0
  61. package/docs/quickstart/index.html +842 -0
  62. package/docs/search/search_index.json +1 -0
  63. package/docs/setup/index.html +941 -0
  64. package/docs/sitemap.xml +51 -0
  65. package/package.json +42 -0
  66. package/src/adopt-plan.mjs +594 -0
  67. package/src/check.mjs +415 -0
  68. package/src/cli.mjs +230 -0
  69. package/src/errors.mjs +144 -0
  70. package/src/gitprobe.mjs +230 -0
  71. package/src/identity-check.mjs +563 -0
  72. package/src/index.mjs +233 -0
  73. package/src/license-texts/Apache-2.0.txt +201 -0
  74. package/src/license-texts/MIT.txt +21 -0
  75. package/src/licensing.mjs +299 -0
  76. package/src/migration.mjs +427 -0
  77. package/src/projection.mjs +397 -0
  78. package/src/scaffold.mjs +178 -0
  79. package/src/skeleton.mjs +886 -0
  80. package/src/workspace.mjs +236 -0
@@ -0,0 +1,904 @@
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/architecture/">
14
+
15
+
16
+ <link rel="prev" href="../help/">
17
+
18
+
19
+ <link rel="next" href="../migration/">
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
+
368
+
369
+ <li class="md-nav__item md-nav__item--active">
370
+
371
+ <input class="md-nav__toggle md-toggle" type="checkbox" id="__toc">
372
+
373
+
374
+
375
+
376
+
377
+ <label class="md-nav__link md-nav__link--active" for="__toc">
378
+
379
+
380
+
381
+ <span class="md-ellipsis">
382
+
383
+
384
+ 架构边界
385
+
386
+
387
+
388
+ </span>
389
+
390
+
391
+
392
+ <span class="md-nav__icon md-icon"></span>
393
+ </label>
394
+
395
+ <a href="./" class="md-nav__link md-nav__link--active">
396
+
397
+
398
+
399
+ <span class="md-ellipsis">
400
+
401
+
402
+ 架构边界
403
+
404
+
405
+
406
+ </span>
407
+
408
+
409
+
410
+ </a>
411
+
412
+
413
+
414
+ <nav class="md-nav md-nav--secondary" aria-label="目录">
415
+
416
+
417
+
418
+
419
+
420
+
421
+ <label class="md-nav__title" for="__toc">
422
+ <span class="md-nav__icon md-icon"></span>
423
+ 目录
424
+ </label>
425
+ <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
426
+
427
+ <li class="md-nav__item">
428
+ <a href="#分层" class="md-nav__link">
429
+ <span class="md-ellipsis">
430
+
431
+ 分层
432
+
433
+ </span>
434
+ </a>
435
+
436
+ </li>
437
+
438
+ <li class="md-nav__item">
439
+ <a href="#唯一权威" class="md-nav__link">
440
+ <span class="md-ellipsis">
441
+
442
+ 唯一权威
443
+
444
+ </span>
445
+ </a>
446
+
447
+ </li>
448
+
449
+ <li class="md-nav__item">
450
+ <a href="#首版预算" class="md-nav__link">
451
+ <span class="md-ellipsis">
452
+
453
+ 首版预算
454
+
455
+ </span>
456
+ </a>
457
+
458
+ </li>
459
+
460
+ <li class="md-nav__item">
461
+ <a href="#机器真源与文件分类" class="md-nav__link">
462
+ <span class="md-ellipsis">
463
+
464
+ 机器真源与文件分类
465
+
466
+ </span>
467
+ </a>
468
+
469
+ </li>
470
+
471
+ <li class="md-nav__item">
472
+ <a href="#文档系统与事实检查" class="md-nav__link">
473
+ <span class="md-ellipsis">
474
+
475
+ 文档系统与事实检查
476
+
477
+ </span>
478
+ </a>
479
+
480
+ </li>
481
+
482
+ <li class="md-nav__item">
483
+ <a href="#稳定产品门禁" class="md-nav__link">
484
+ <span class="md-ellipsis">
485
+
486
+ 稳定产品门禁
487
+
488
+ </span>
489
+ </a>
490
+
491
+ </li>
492
+
493
+ </ul>
494
+
495
+ </nav>
496
+
497
+ </li>
498
+
499
+
500
+
501
+
502
+
503
+
504
+
505
+
506
+
507
+ <li class="md-nav__item">
508
+ <a href="../migration/" class="md-nav__link">
509
+
510
+
511
+
512
+ <span class="md-ellipsis">
513
+
514
+
515
+ 存量采用与迁移
516
+
517
+
518
+
519
+ </span>
520
+
521
+
522
+
523
+ </a>
524
+ </li>
525
+
526
+
527
+
528
+
529
+
530
+
531
+
532
+
533
+
534
+ <li class="md-nav__item">
535
+ <a href="../integration/audit/" class="md-nav__link">
536
+
537
+
538
+
539
+ <span class="md-ellipsis">
540
+
541
+
542
+ 独立审计集成
543
+
544
+
545
+
546
+ </span>
547
+
548
+
549
+
550
+ </a>
551
+ </li>
552
+
553
+
554
+
555
+
556
+
557
+
558
+
559
+
560
+
561
+ <li class="md-nav__item">
562
+ <a href="../integration/audit/mutation-taxonomy/" class="md-nav__link">
563
+
564
+
565
+
566
+ <span class="md-ellipsis">
567
+
568
+
569
+ 审计变异分类学
570
+
571
+
572
+
573
+ </span>
574
+
575
+
576
+
577
+ </a>
578
+ </li>
579
+
580
+
581
+
582
+
583
+
584
+
585
+
586
+
587
+
588
+ <li class="md-nav__item">
589
+ <a href="../integration/audit/independence/" class="md-nav__link">
590
+
591
+
592
+
593
+ <span class="md-ellipsis">
594
+
595
+
596
+ 审计独立性证明
597
+
598
+
599
+
600
+ </span>
601
+
602
+
603
+
604
+ </a>
605
+ </li>
606
+
607
+
608
+
609
+
610
+
611
+
612
+
613
+
614
+
615
+ <li class="md-nav__item">
616
+ <a href="../integration/audit/version-compatibility/" class="md-nav__link">
617
+
618
+
619
+
620
+ <span class="md-ellipsis">
621
+
622
+
623
+ 审计版本兼容定义
624
+
625
+
626
+
627
+ </span>
628
+
629
+
630
+
631
+ </a>
632
+ </li>
633
+
634
+
635
+
636
+
637
+
638
+
639
+
640
+
641
+
642
+ <li class="md-nav__item">
643
+ <a href="../integration/audit/failure-evidence/" class="md-nav__link">
644
+
645
+
646
+
647
+ <span class="md-ellipsis">
648
+
649
+
650
+ 审计失败证据与 AUD 码
651
+
652
+
653
+
654
+ </span>
655
+
656
+
657
+
658
+ </a>
659
+ </li>
660
+
661
+
662
+
663
+ </ul>
664
+ </nav>
665
+ </div>
666
+ </div>
667
+ </div>
668
+
669
+
670
+
671
+ <div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" >
672
+ <div class="md-sidebar__scrollwrap">
673
+ <div class="md-sidebar__inner">
674
+
675
+
676
+ <nav class="md-nav md-nav--secondary" aria-label="目录">
677
+
678
+
679
+
680
+
681
+
682
+
683
+ <label class="md-nav__title" for="__toc">
684
+ <span class="md-nav__icon md-icon"></span>
685
+ 目录
686
+ </label>
687
+ <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
688
+
689
+ <li class="md-nav__item">
690
+ <a href="#分层" class="md-nav__link">
691
+ <span class="md-ellipsis">
692
+
693
+ 分层
694
+
695
+ </span>
696
+ </a>
697
+
698
+ </li>
699
+
700
+ <li class="md-nav__item">
701
+ <a href="#唯一权威" class="md-nav__link">
702
+ <span class="md-ellipsis">
703
+
704
+ 唯一权威
705
+
706
+ </span>
707
+ </a>
708
+
709
+ </li>
710
+
711
+ <li class="md-nav__item">
712
+ <a href="#首版预算" class="md-nav__link">
713
+ <span class="md-ellipsis">
714
+
715
+ 首版预算
716
+
717
+ </span>
718
+ </a>
719
+
720
+ </li>
721
+
722
+ <li class="md-nav__item">
723
+ <a href="#机器真源与文件分类" class="md-nav__link">
724
+ <span class="md-ellipsis">
725
+
726
+ 机器真源与文件分类
727
+
728
+ </span>
729
+ </a>
730
+
731
+ </li>
732
+
733
+ <li class="md-nav__item">
734
+ <a href="#文档系统与事实检查" class="md-nav__link">
735
+ <span class="md-ellipsis">
736
+
737
+ 文档系统与事实检查
738
+
739
+ </span>
740
+ </a>
741
+
742
+ </li>
743
+
744
+ <li class="md-nav__item">
745
+ <a href="#稳定产品门禁" class="md-nav__link">
746
+ <span class="md-ellipsis">
747
+
748
+ 稳定产品门禁
749
+
750
+ </span>
751
+ </a>
752
+
753
+ </li>
754
+
755
+ </ul>
756
+
757
+ </nav>
758
+ </div>
759
+ </div>
760
+ </div>
761
+
762
+
763
+
764
+ <div class="md-content" data-md-component="content">
765
+
766
+ <article class="md-content__inner md-typeset">
767
+
768
+
769
+
770
+
771
+
772
+ <h1 id="架构边界">架构边界<a class="headerlink" href="#架构边界" title="Permanent link">&para;</a></h1>
773
+ <h2 id="分层">分层<a class="headerlink" href="#分层" title="Permanent link">&para;</a></h2>
774
+ <pre><code class="language-text">Contracts &lt;- Harness Node &lt;- Engineering Kit &lt;- Profile &lt;- Skill Family Project
775
+ ^
776
+ └---------------- independent Audit consumer
777
+ </code></pre>
778
+ <p>箭头表示左侧是右侧的依赖。公共核心不得反向依赖具体 Profile 或具体技能族。</p>
779
+ <h2 id="唯一权威">唯一权威<a class="headerlink" href="#唯一权威" title="Permanent link">&para;</a></h2>
780
+ <ul>
781
+ <li>Contracts:结构、协议、错误码和协议名登记;</li>
782
+ <li>Harness:Contracts 的 Node 机制实现;</li>
783
+ <li>Kit:四个工程命令及其只读/受限写入边界;</li>
784
+ <li>Profile:项目形态差异;</li>
785
+ <li>Audit:独立 fixture、预期值和裁决;</li>
786
+ <li>Release:发布状态和全部远端写入。</li>
787
+ </ul>
788
+ <h2 id="首版预算">首版预算<a class="headerlink" href="#首版预算" title="Permanent link">&para;</a></h2>
789
+ <ul>
790
+ <li>顶层 Contracts 对象:6 类(project-manifest、profile-descriptor、managed-file-lock、operation-request、operation-result、migration-manifest);</li>
791
+ <li>Kit 顶层命令:4 个(scaffold、adopt-plan、projection、check);</li>
792
+ <li>强制机械规则:当前 13 条,预算不超过 20 条,绝对上限 30 条;</li>
793
+ <li>叶子包:3 个(skill-family-contracts、skill-family-harness-node、skill-family-engineering-kit);</li>
794
+ <li>Schema 校验器:Ajv 8.20.0(精确版本 pin),支持 draft-07 与 2020-12 双方言;</li>
795
+ <li>kernel 协议:skill-family.kernel.operation(stable),Contracts 版本 1.1.1;</li>
796
+ <li>默认运行时语言:Node;第二语言实现首版为 0。</li>
797
+ </ul>
798
+ <p>任何新增组件必须说明删除它会导致的两个以上真实消费者重复实现,并通过独立 fixture 验证。</p>
799
+ <h2 id="机器真源与文件分类">机器真源与文件分类<a class="headerlink" href="#机器真源与文件分类" title="Permanent link">&para;</a></h2>
800
+ <table>
801
+ <thead>
802
+ <tr>
803
+ <th>真源</th>
804
+ <th>内容</th>
805
+ </tr>
806
+ </thead>
807
+ <tbody>
808
+ <tr>
809
+ <td><code>.foundation/skeleton-manifest.json</code></td>
810
+ <td>包清单、Profile、fixture、顶层命令</td>
811
+ </tr>
812
+ <tr>
813
+ <td><code>.foundation/version-lock.json</code></td>
814
+ <td>projen、pnpm、Node 的精确版本与锁定点</td>
815
+ </tr>
816
+ <tr>
817
+ <td><code>.foundation/file-registry.json</code></td>
818
+ <td>managed / handwritten / artifact 三类文件登记</td>
819
+ </tr>
820
+ <tr>
821
+ <td><code>package.json</code> 与 <code>packages/*/package.json</code></td>
822
+ <td>版本、命令、依赖(全部 projen 受管)</td>
823
+ </tr>
824
+ <tr>
825
+ <td><code>packages/skill-family-contracts/src/registry.json</code></td>
826
+ <td>协议名与 Schema $id 登记</td>
827
+ </tr>
828
+ <tr>
829
+ <td><code>scripts/release-artifact-contract.json</code></td>
830
+ <td>固定三包发布字节合同(成员、必需项与内容摘要规则)</td>
831
+ </tr>
832
+ </tbody>
833
+ </table>
834
+ <p>受管文件只能通过 <code>.projenrc.js</code> 修改并运行 <code>pnpm synth</code> 再生成;手写文件(含全部文档)不会被 synth 覆盖。分类权威见 <code>.foundation/file-registry.json</code>。</p>
835
+ <h2 id="文档系统与事实检查">文档系统与事实检查<a class="headerlink" href="#文档系统与事实检查" title="Permanent link">&para;</a></h2>
836
+ <p>文档体系的目标是用确定性检查消除手工漂移:</p>
837
+ <ol>
838
+ <li><strong>冻结事实包</strong>:文档写作只消费上表所列机器真源。模型或作者不得凭记忆写入版本、命令、包数;模型名、凭据和调度信息不进入文档,也不进入 Contracts。</li>
839
+ <li><strong>事实检查</strong>:<code>node scripts/docs/fact-check.mjs</code> 对照真源校验文档中的包名、命令、门禁事实、版本 pin 与关键数字,并交叉校验真源之间的一致性(manifest 与 package.json、version-lock 与 packageManager、规则数与预算等)。</li>
840
+ <li><strong>链接检查</strong>:<code>node scripts/docs/link-check.mjs</code> 解析 README 与全部 <code>docs/**/*.md</code> 的站内相对链接和标题锚点,并校验 <code>mkdocs.yml</code> nav 收录完整。</li>
841
+ <li><strong>无工作流边界与公开边界验证</strong>:本仓没有任何 CI/CD workflow(旧拓扑的 ci/docs/docs-deploy 三个 Actions 已整体删除),全部门禁在私有工作区内运行(<code>pnpm check</code>);公开边界由 <code>check:public-snapshots</code> 与发布字节合同机械验证(public 镜像投影与 tarball 逐字节一致、公开载荷 allowlist 精确相等、私有与公开载荷均无 workflow),见 <code>scripts/public-snapshot-gate.mjs</code> 与 <code>scripts/render-public-package-json.mjs</code>。公开静态站由 <code>scripts/render-public-site.mjs</code> 渲染(唯一输出 <code>docs/public/site/**</code> 与确定性基线 <code>docs/public/site-baseline.json</code>),站点文件与 engineering-kit public 镜像仓的 <code>docs/**</code> 逐文件对应。</li>
842
+ <li><strong>版本锁定</strong>:站点工具链锁定在 <code>scripts/docs/toolchain.json</code> 与 <code>scripts/docs/requirements.txt</code>,构建只使用仓库外部的 Python 虚拟环境,不做系统级 pip install。</li>
843
+ </ol>
844
+ <p>两个检查脚本都可直接 <code>node scripts/docs/&lt;name&gt;.mjs</code> 运行:<code>fact-check.mjs</code> 是 Node 脚本,经仓内模块(<code>scripts/engine-floor-check.mjs</code>)消费根目录精确锁定的 <code>semver@7.8.5</code>,运行前必须先完成 <code>pnpm install --frozen-lockfile</code>;<code>link-check.mjs</code> 为纯 Node 实现(无第三方依赖)。职责说明见 <code>scripts/docs/README.md</code>。</p>
845
+ <h2 id="稳定产品门禁">稳定产品门禁<a class="headerlink" href="#稳定产品门禁" title="Permanent link">&para;</a></h2>
846
+ <p>根 <code>pnpm check</code> 只编排 10 个稳定产品 gate ID(<code>check:structure</code>~<code>check:integration</code>,逐 ID 见 当前产品状态),不再锁死原始命令清单;每个稳定 ID 在自己的 package script 内组合少量产品检查。门禁事实由 <code>node scripts/docs/fact-check.mjs</code> 从根 <code>package.json</code> 的 <code>scripts.check</code> 机械推导并逐字核对(setup 投影区块与 <code>scripts.check</code> 逐字一致)。文档与 setup 只调用或列出 10 个稳定 ID 或根 <code>pnpm check</code>,不复制底层命令列表。</p>
847
+ <p>仓内检查的诚实边界:结构检查只证明“字节/结构一致性(仓内可证)”;一次性迁移完整性、普通正文语义与最终接受/拒绝结论属于外部审阅职责,不在目标仓内维护第二份门禁 registry、baseline 或命令比较器。</p>
848
+
849
+
850
+
851
+
852
+
853
+
854
+
855
+
856
+
857
+
858
+
859
+
860
+
861
+ </article>
862
+ </div>
863
+
864
+
865
+ <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script>
866
+ </div>
867
+
868
+ </main>
869
+
870
+ <footer class="md-footer">
871
+
872
+ <div class="md-footer-meta md-typeset">
873
+ <div class="md-footer-meta__inner md-grid">
874
+ <div class="md-copyright">
875
+
876
+
877
+ Made with
878
+ <a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener">
879
+ Material for MkDocs
880
+ </a>
881
+
882
+ </div>
883
+
884
+ </div>
885
+ </div>
886
+ </footer>
887
+
888
+ </div>
889
+ <div class="md-dialog" data-md-component="dialog">
890
+ <div class="md-dialog__inner md-typeset"></div>
891
+ </div>
892
+
893
+
894
+
895
+
896
+
897
+ <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>
898
+
899
+
900
+ <script src="../assets/javascripts/bundle.d7400e89.min.js"></script>
901
+
902
+
903
+ </body>
904
+ </html>