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,872 @@
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/integration/audit/failure-evidence/">
14
+
15
+
16
+ <link rel="prev" href="../version-compatibility/">
17
+
18
+
19
+
20
+
21
+
22
+
23
+ <link rel="icon" href="../../../assets/images/favicon.png">
24
+ <meta name="generator" content="mkdocs-1.6.1, mkdocs-material-9.7.7">
25
+
26
+
27
+
28
+ <title>审计失败证据与 AUD 码 - Skill Family Foundation</title>
29
+
30
+
31
+
32
+ <link rel="stylesheet" href="../../../assets/stylesheets/main.ec1eaa64.min.css">
33
+
34
+
35
+ <link rel="stylesheet" href="../../../assets/stylesheets/palette.ab4e12ef.min.css">
36
+
37
+
38
+
39
+
40
+
41
+
42
+
43
+
44
+
45
+
46
+
47
+
48
+ <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>
49
+
50
+
51
+
52
+
53
+
54
+ </head>
55
+
56
+
57
+
58
+
59
+
60
+
61
+
62
+
63
+
64
+ <body dir="ltr" data-md-color-scheme="default" data-md-color-primary="indigo" data-md-color-accent="indigo">
65
+
66
+
67
+ <input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
68
+ <input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
69
+ <label class="md-overlay" for="__drawer"></label>
70
+ <div data-md-component="skip">
71
+
72
+
73
+ <a href="#失败证据格式与-AUD-码登记表" class="md-skip">
74
+ 跳转至
75
+ </a>
76
+
77
+ </div>
78
+ <div data-md-component="announce">
79
+
80
+ </div>
81
+
82
+
83
+
84
+
85
+
86
+
87
+ <header class="md-header md-header--shadow" data-md-component="header">
88
+ <nav class="md-header__inner md-grid" aria-label="页眉">
89
+ <a href="../../.." title="Skill Family Foundation" class="md-header__button md-logo" aria-label="Skill Family Foundation" data-md-component="logo">
90
+
91
+
92
+ <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>
93
+
94
+ </a>
95
+ <label class="md-header__button md-icon" for="__drawer">
96
+
97
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg>
98
+ </label>
99
+ <div class="md-header__title" data-md-component="header-title">
100
+ <div class="md-header__ellipsis">
101
+ <div class="md-header__topic">
102
+ <span class="md-ellipsis">
103
+ Skill Family Foundation
104
+ </span>
105
+ </div>
106
+ <div class="md-header__topic" data-md-component="header-topic">
107
+ <span class="md-ellipsis">
108
+
109
+ 审计失败证据与 AUD 码
110
+
111
+ </span>
112
+ </div>
113
+ </div>
114
+ </div>
115
+
116
+
117
+ <form class="md-header__option" data-md-component="palette">
118
+
119
+
120
+
121
+
122
+ <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">
123
+
124
+ <label class="md-header__button md-icon" title="切换到深色模式" for="__palette_1" hidden>
125
+ <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>
126
+ </label>
127
+
128
+
129
+
130
+
131
+
132
+ <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">
133
+
134
+ <label class="md-header__button md-icon" title="切换到浅色模式" for="__palette_0" hidden>
135
+ <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>
136
+ </label>
137
+
138
+
139
+ </form>
140
+
141
+
142
+
143
+ <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>
144
+
145
+
146
+
147
+
148
+
149
+ <label class="md-header__button md-icon" for="__search">
150
+
151
+ <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>
152
+ </label>
153
+ <div class="md-search" data-md-component="search" role="dialog">
154
+ <label class="md-search__overlay" for="__search"></label>
155
+ <div class="md-search__inner" role="search">
156
+ <form class="md-search__form" name="search">
157
+ <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>
158
+ <label class="md-search__icon md-icon" for="__search">
159
+
160
+ <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>
161
+
162
+ <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>
163
+ </label>
164
+ <nav class="md-search__options" aria-label="查找">
165
+
166
+ <button type="reset" class="md-search__icon md-icon" title="清空当前内容" aria-label="清空当前内容" tabindex="-1">
167
+
168
+ <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>
169
+ </button>
170
+ </nav>
171
+
172
+ </form>
173
+ <div class="md-search__output">
174
+ <div class="md-search__scrollwrap" tabindex="0" data-md-scrollfix>
175
+ <div class="md-search-result" data-md-component="search-result">
176
+ <div class="md-search-result__meta">
177
+ 正在初始化搜索引擎
178
+ </div>
179
+ <ol class="md-search-result__list" role="presentation"></ol>
180
+ </div>
181
+ </div>
182
+ </div>
183
+ </div>
184
+ </div>
185
+
186
+
187
+
188
+ </nav>
189
+
190
+ </header>
191
+
192
+ <div class="md-container" data-md-component="container">
193
+
194
+
195
+
196
+
197
+
198
+
199
+ <main class="md-main" data-md-component="main">
200
+ <div class="md-main__inner md-grid">
201
+
202
+
203
+
204
+ <div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" >
205
+ <div class="md-sidebar__scrollwrap">
206
+ <div class="md-sidebar__inner">
207
+
208
+
209
+
210
+
211
+ <nav class="md-nav md-nav--primary" aria-label="导航栏" data-md-level="0">
212
+ <label class="md-nav__title" for="__drawer">
213
+ <a href="../../.." title="Skill Family Foundation" class="md-nav__button md-logo" aria-label="Skill Family Foundation" data-md-component="logo">
214
+
215
+
216
+ <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>
217
+
218
+ </a>
219
+ Skill Family Foundation
220
+ </label>
221
+
222
+ <ul class="md-nav__list" data-md-scrollfix>
223
+
224
+
225
+
226
+
227
+
228
+
229
+
230
+ <li class="md-nav__item">
231
+ <a href="../../.." class="md-nav__link">
232
+
233
+
234
+
235
+ <span class="md-ellipsis">
236
+
237
+
238
+ 首页
239
+
240
+
241
+
242
+ </span>
243
+
244
+
245
+
246
+ </a>
247
+ </li>
248
+
249
+
250
+
251
+
252
+
253
+
254
+
255
+
256
+
257
+ <li class="md-nav__item">
258
+ <a href="../../../setup/" class="md-nav__link">
259
+
260
+
261
+
262
+ <span class="md-ellipsis">
263
+
264
+
265
+ 安装与环境
266
+
267
+
268
+
269
+ </span>
270
+
271
+
272
+
273
+ </a>
274
+ </li>
275
+
276
+
277
+
278
+
279
+
280
+
281
+
282
+
283
+
284
+ <li class="md-nav__item">
285
+ <a href="../../../quickstart/" class="md-nav__link">
286
+
287
+
288
+
289
+ <span class="md-ellipsis">
290
+
291
+
292
+ 快速开始
293
+
294
+
295
+
296
+ </span>
297
+
298
+
299
+
300
+ </a>
301
+ </li>
302
+
303
+
304
+
305
+
306
+
307
+
308
+
309
+
310
+
311
+ <li class="md-nav__item">
312
+ <a href="../../../git-lifecycle/" class="md-nav__link">
313
+
314
+
315
+
316
+ <span class="md-ellipsis">
317
+
318
+
319
+ Git 生命周期指南
320
+
321
+
322
+
323
+ </span>
324
+
325
+
326
+
327
+ </a>
328
+ </li>
329
+
330
+
331
+
332
+
333
+
334
+
335
+
336
+
337
+
338
+ <li class="md-nav__item">
339
+ <a href="../../../help/" class="md-nav__link">
340
+
341
+
342
+
343
+ <span class="md-ellipsis">
344
+
345
+
346
+ 能力与诊断
347
+
348
+
349
+
350
+ </span>
351
+
352
+
353
+
354
+ </a>
355
+ </li>
356
+
357
+
358
+
359
+
360
+
361
+
362
+
363
+
364
+
365
+ <li class="md-nav__item">
366
+ <a href="../../../architecture/" class="md-nav__link">
367
+
368
+
369
+
370
+ <span class="md-ellipsis">
371
+
372
+
373
+ 架构边界
374
+
375
+
376
+
377
+ </span>
378
+
379
+
380
+
381
+ </a>
382
+ </li>
383
+
384
+
385
+
386
+
387
+
388
+
389
+
390
+
391
+
392
+ <li class="md-nav__item">
393
+ <a href="../../../migration/" class="md-nav__link">
394
+
395
+
396
+
397
+ <span class="md-ellipsis">
398
+
399
+
400
+ 存量采用与迁移
401
+
402
+
403
+
404
+ </span>
405
+
406
+
407
+
408
+ </a>
409
+ </li>
410
+
411
+
412
+
413
+
414
+
415
+
416
+
417
+
418
+
419
+ <li class="md-nav__item">
420
+ <a href="../" class="md-nav__link">
421
+
422
+
423
+
424
+ <span class="md-ellipsis">
425
+
426
+
427
+ 独立审计集成
428
+
429
+
430
+
431
+ </span>
432
+
433
+
434
+
435
+ </a>
436
+ </li>
437
+
438
+
439
+
440
+
441
+
442
+
443
+
444
+
445
+
446
+ <li class="md-nav__item">
447
+ <a href="../mutation-taxonomy/" class="md-nav__link">
448
+
449
+
450
+
451
+ <span class="md-ellipsis">
452
+
453
+
454
+ 审计变异分类学
455
+
456
+
457
+
458
+ </span>
459
+
460
+
461
+
462
+ </a>
463
+ </li>
464
+
465
+
466
+
467
+
468
+
469
+
470
+
471
+
472
+
473
+ <li class="md-nav__item">
474
+ <a href="../independence/" class="md-nav__link">
475
+
476
+
477
+
478
+ <span class="md-ellipsis">
479
+
480
+
481
+ 审计独立性证明
482
+
483
+
484
+
485
+ </span>
486
+
487
+
488
+
489
+ </a>
490
+ </li>
491
+
492
+
493
+
494
+
495
+
496
+
497
+
498
+
499
+
500
+ <li class="md-nav__item">
501
+ <a href="../version-compatibility/" class="md-nav__link">
502
+
503
+
504
+
505
+ <span class="md-ellipsis">
506
+
507
+
508
+ 审计版本兼容定义
509
+
510
+
511
+
512
+ </span>
513
+
514
+
515
+
516
+ </a>
517
+ </li>
518
+
519
+
520
+
521
+
522
+
523
+
524
+
525
+
526
+
527
+
528
+
529
+ <li class="md-nav__item md-nav__item--active">
530
+
531
+ <input class="md-nav__toggle md-toggle" type="checkbox" id="__toc">
532
+
533
+
534
+
535
+
536
+
537
+ <label class="md-nav__link md-nav__link--active" for="__toc">
538
+
539
+
540
+
541
+ <span class="md-ellipsis">
542
+
543
+
544
+ 审计失败证据与 AUD 码
545
+
546
+
547
+
548
+ </span>
549
+
550
+
551
+
552
+ <span class="md-nav__icon md-icon"></span>
553
+ </label>
554
+
555
+ <a href="./" class="md-nav__link md-nav__link--active">
556
+
557
+
558
+
559
+ <span class="md-ellipsis">
560
+
561
+
562
+ 审计失败证据与 AUD 码
563
+
564
+
565
+
566
+ </span>
567
+
568
+
569
+
570
+ </a>
571
+
572
+
573
+
574
+ <nav class="md-nav md-nav--secondary" aria-label="目录">
575
+
576
+
577
+
578
+
579
+
580
+
581
+ <label class="md-nav__title" for="__toc">
582
+ <span class="md-nav__icon md-icon"></span>
583
+ 目录
584
+ </label>
585
+ <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
586
+
587
+ <li class="md-nav__item">
588
+ <a href="#证据文档形状" class="md-nav__link">
589
+ <span class="md-ellipsis">
590
+
591
+ 证据文档形状
592
+
593
+ </span>
594
+ </a>
595
+
596
+ </li>
597
+
598
+ <li class="md-nav__item">
599
+ <a href="#裁决规则" class="md-nav__link">
600
+ <span class="md-ellipsis">
601
+
602
+ 裁决规则
603
+
604
+ </span>
605
+ </a>
606
+
607
+ </li>
608
+
609
+ <li class="md-nav__item">
610
+ <a href="#AUD-码登记表append-only" class="md-nav__link">
611
+ <span class="md-ellipsis">
612
+
613
+ AUD 码登记表(append-only)
614
+
615
+ </span>
616
+ </a>
617
+
618
+ </li>
619
+
620
+ </ul>
621
+
622
+ </nav>
623
+
624
+ </li>
625
+
626
+
627
+
628
+ </ul>
629
+ </nav>
630
+ </div>
631
+ </div>
632
+ </div>
633
+
634
+
635
+
636
+ <div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" >
637
+ <div class="md-sidebar__scrollwrap">
638
+ <div class="md-sidebar__inner">
639
+
640
+
641
+ <nav class="md-nav md-nav--secondary" aria-label="目录">
642
+
643
+
644
+
645
+
646
+
647
+
648
+ <label class="md-nav__title" for="__toc">
649
+ <span class="md-nav__icon md-icon"></span>
650
+ 目录
651
+ </label>
652
+ <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
653
+
654
+ <li class="md-nav__item">
655
+ <a href="#证据文档形状" class="md-nav__link">
656
+ <span class="md-ellipsis">
657
+
658
+ 证据文档形状
659
+
660
+ </span>
661
+ </a>
662
+
663
+ </li>
664
+
665
+ <li class="md-nav__item">
666
+ <a href="#裁决规则" class="md-nav__link">
667
+ <span class="md-ellipsis">
668
+
669
+ 裁决规则
670
+
671
+ </span>
672
+ </a>
673
+
674
+ </li>
675
+
676
+ <li class="md-nav__item">
677
+ <a href="#AUD-码登记表append-only" class="md-nav__link">
678
+ <span class="md-ellipsis">
679
+
680
+ AUD 码登记表(append-only)
681
+
682
+ </span>
683
+ </a>
684
+
685
+ </li>
686
+
687
+ </ul>
688
+
689
+ </nav>
690
+ </div>
691
+ </div>
692
+ </div>
693
+
694
+
695
+
696
+ <div class="md-content" data-md-component="content">
697
+
698
+ <article class="md-content__inner md-typeset">
699
+
700
+
701
+
702
+
703
+
704
+ <h1 id="失败证据格式与-AUD-码登记表">失败证据格式与 AUD 码登记表<a class="headerlink" href="#失败证据格式与-AUD-码登记表" title="Permanent link">&para;</a></h1>
705
+ <p>审计发现必须以<strong>机器可读</strong>的证据文档记录。证据文档由 <code>runner/run-audit.mjs</code> 输出到 stdout,格式由 <a href="../schemas/audit-evidence.schema.json">schemas/audit-evidence.schema.json</a> 冻结,并通过被消费 Contracts 的 <code>validateDocument</code>(2020-12 方言、strict 策略)自校验——证据文档本身不合格是机制错误(退出码 2)。</p>
706
+ <h2 id="证据文档形状">证据文档形状<a class="headerlink" href="#证据文档形状" title="Permanent link">&para;</a></h2>
707
+ <pre><code class="language-json">{
708
+ &quot;schemaVersion&quot;: 1,
709
+ &quot;kind&quot;: &quot;skill-family.audit.evidence&quot;,
710
+ &quot;auditId&quot;: &quot;fnd-060-independent-audit&quot;,
711
+ &quot;generatedAt&quot;: &quot;RFC 3339 date-time&quot;,
712
+ &quot;consumer&quot;: {
713
+ &quot;contractsVersion&quot;: &quot;1.0.0&quot;,
714
+ &quot;auditSurfaceVersion&quot;: 1,
715
+ &quot;surfaceDigest&quot;: { &quot;algorithm&quot;: &quot;sha256&quot;, &quot;value&quot;: &quot;64 位十六进制&quot; }
716
+ },
717
+ &quot;verdict&quot;: &quot;pass | fail&quot;,
718
+ &quot;classCoverage&quot;: {
719
+ &quot;&lt;class&gt;&quot;: { &quot;fixtures&quot;: 0, &quot;detected&quot;: 0, &quot;required&quot;: 3, &quot;satisfied&quot;: false }
720
+ },
721
+ &quot;fixtureResults&quot;: [
722
+ { &quot;fixtureId&quot;: &quot;AUD-M1-01&quot;, &quot;mutationClass&quot;: &quot;structure&quot;, &quot;expectedAuditCode&quot;: &quot;AUD-M1-STRUCT&quot;, &quot;detected&quot;: true, &quot;observed&quot;: {} }
723
+ ],
724
+ &quot;findings&quot;: [
725
+ {
726
+ &quot;findingId&quot;: &quot;F-0001&quot;,
727
+ &quot;auditCode&quot;: &quot;AUD-BASE-001&quot;,
728
+ &quot;severity&quot;: &quot;mandatory&quot;,
729
+ &quot;mutationClass&quot;: null,
730
+ &quot;fixtureId&quot;: null,
731
+ &quot;detected&quot;: true,
732
+ &quot;summary&quot;: &quot;人类可读摘要&quot;,
733
+ &quot;details&quot;: {}
734
+ }
735
+ ]
736
+ }
737
+ </code></pre>
738
+ <p>要点:</p>
739
+ <ul>
740
+ <li><code>consumer</code> 用<strong>版本坐标 + surface 摘要</strong>钉死被消费的 Contracts 包,证据因此可回溯到精确字节;</li>
741
+ <li><code>fixtureResults</code> 是全部 fixture 的重放记录(含通过项),<code>findings</code> 只收违规项;</li>
742
+ <li>v1 冻结单一严重级 <code>mandatory</code>:任何发现都使 <code>verdict</code> 为 <code>fail</code>;</li>
743
+ <li><code>classCoverage</code> 五类齐全;<code>satisfied = fixtures ≥ 3 且 detected ≥ 1</code>。</li>
744
+ </ul>
745
+ <h2 id="裁决规则">裁决规则<a class="headerlink" href="#裁决规则" title="Permanent link">&para;</a></h2>
746
+ <ol>
747
+ <li><code>findings</code> 为空 → <code>verdict = pass</code>,退出码 0;</li>
748
+ <li>任一发现存在 → <code>verdict = fail</code>,退出码 1;</li>
749
+ <li>用法或机制错误(含证据自校验失败)→ 退出码 2,不产生证据或产生作废证据;</li>
750
+ <li><strong>漏报律</strong>:任一类 <code>satisfied = false</code> 必须产生 AUD-MISS-001 发现,整体 verdict 必为 fail。</li>
751
+ </ol>
752
+ <h2 id="AUD-码登记表append-only">AUD 码登记表(append-only)<a class="headerlink" href="#AUD-码登记表append-only" title="Permanent link">&para;</a></h2>
753
+ <p>审计码属于审计自有命名空间 <code>AUD-</code>,<strong>不进入</strong> Contracts 的 SFC 登记;审计对 SFC 码只读消费。机器可读副本见 <a href="../baseline/audit-codes.json">baseline/audit-codes.json</a>。</p>
754
+ <table>
755
+ <thead>
756
+ <tr>
757
+ <th>码</th>
758
+ <th>名称</th>
759
+ <th>含义</th>
760
+ </tr>
761
+ </thead>
762
+ <tbody>
763
+ <tr>
764
+ <td>AUD-M1-STRUCT</td>
765
+ <td>STRUCTURE_MUTATION_DETECTED</td>
766
+ <td>结构类变异被检出(观察码等于预期稳定码)</td>
767
+ </tr>
768
+ <tr>
769
+ <td>AUD-M2-SEM</td>
770
+ <td>SEMANTIC_MUTATION_DETECTED</td>
771
+ <td>语义类变异被检出</td>
772
+ </tr>
773
+ <tr>
774
+ <td>AUD-M3-DIGEST</td>
775
+ <td>DIGEST_MISMATCH_DETECTED</td>
776
+ <td>摘要类变异被检出(规范化摘要与 pin 不一致)</td>
777
+ </tr>
778
+ <tr>
779
+ <td>AUD-M4-OMIT</td>
780
+ <td>OMISSION_DETECTED</td>
781
+ <td>遗漏类变异被检出(缺失清单与预期一致)</td>
782
+ </tr>
783
+ <tr>
784
+ <td>AUD-M5-ENGINE</td>
785
+ <td>ENGINE_WEAKENING_DETECTED</td>
786
+ <td>引擎削弱类变异被检出(被削弱字段与预期一致)</td>
787
+ </tr>
788
+ <tr>
789
+ <td>AUD-MISS-001</td>
790
+ <td>MUTATION_CLASS_MISSED</td>
791
+ <td>某类 fixture 数低于冻结下限或零检出;漏报即整体失败</td>
792
+ </tr>
793
+ <tr>
794
+ <td>AUD-BASE-001</td>
795
+ <td>BASELINE_DRIFT</td>
796
+ <td>消费的 Contracts 活跃 surface 与冻结基线 pin 不一致</td>
797
+ </tr>
798
+ <tr>
799
+ <td>AUD-FMT-001</td>
800
+ <td>EVIDENCE_OR_FIXTURE_FORMAT_INVALID</td>
801
+ <td>fixture 信封或证据文档格式非法</td>
802
+ </tr>
803
+ <tr>
804
+ <td>AUD-LOCK-001</td>
805
+ <td>LOCK_VERIFICATION_FAILED</td>
806
+ <td>消费包的身份、依赖闭包或 pin 对比失败</td>
807
+ </tr>
808
+ <tr>
809
+ <td>AUD-IND-001</td>
810
+ <td>INDEPENDENCE_VIOLATION</td>
811
+ <td>审计读取或导入越出允许集合</td>
812
+ </tr>
813
+ </tbody>
814
+ </table>
815
+ <p>登记纪律:码只增不改不复用;新增码必须同步更新本表与 <code>baseline/audit-codes.json</code>,且不得与 SFC 命名空间产生任何交叉拥有。</p>
816
+
817
+
818
+
819
+
820
+
821
+
822
+
823
+
824
+
825
+
826
+
827
+
828
+
829
+ </article>
830
+ </div>
831
+
832
+
833
+ <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script>
834
+ </div>
835
+
836
+ </main>
837
+
838
+ <footer class="md-footer">
839
+
840
+ <div class="md-footer-meta md-typeset">
841
+ <div class="md-footer-meta__inner md-grid">
842
+ <div class="md-copyright">
843
+
844
+
845
+ Made with
846
+ <a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener">
847
+ Material for MkDocs
848
+ </a>
849
+
850
+ </div>
851
+
852
+ </div>
853
+ </div>
854
+ </footer>
855
+
856
+ </div>
857
+ <div class="md-dialog" data-md-component="dialog">
858
+ <div class="md-dialog__inner md-typeset"></div>
859
+ </div>
860
+
861
+
862
+
863
+
864
+
865
+ <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>
866
+
867
+
868
+ <script src="../../../assets/javascripts/bundle.d7400e89.min.js"></script>
869
+
870
+
871
+ </body>
872
+ </html>