-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathengineering-knowledge.json
More file actions
1674 lines (1674 loc) · 72.4 KB
/
Copy pathengineering-knowledge.json
File metadata and controls
1674 lines (1674 loc) · 72.4 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
{
"discoveries": [
{
"artifactPaths": [
"Sources/FoveaStorage/FoveaBlockingIOExecutor.swift"
],
"evidencePaths": [
"Tests/FoveaTests/BlockingIOExecutorTests.swift"
],
"evidenceTestIDs": [],
"extractedAsset": "Fovea-owned BlockingIOExecutor for host persistence boundaries; the exact-pinned Akashic package independently maintains its own equivalent storage execution boundary.",
"id": "FOVEA-EGG-001",
"observation": "多个存储 actor 都需要保持串行事务语义,同时把阻塞工作移出协作式执行器。",
"overgeneralizationRisk": "把所有异步网络或 CPU 工作也放入串行队列会制造队头阻塞和优先级反转。",
"principleIDs": [
"FOVEA-LAW-002",
"FOVEA-LAW-003",
"FOVEA-LAW-014"
],
"status": "promoted",
"title": "阻塞 I/O 执行隔离器",
"transferBoundary": "适用于必须保持 actor 串行事务、但底层 API 是同步阻塞 I/O 的内部实现。",
"triggerProblem": "同步文件系统调用会占用 Swift cooperative executor,并把 actor 事务与线程阻塞混在一起。"
},
{
"artifactPaths": [
"Sources/FoveaCore/AsyncPermitPool.swift"
],
"evidencePaths": [
"Tests/FoveaTests/PrioritySchedulingTests.swift",
"Tests/FoveaTests/ResourceLimitTests.swift"
],
"evidenceTestIDs": [
"RES-PT-001",
"RES-PT-002"
],
"extractedAsset": "使用 Swift ~Copyable 和 consuming 操作表达一次性许可。",
"id": "FOVEA-EGG-002",
"observation": "资源许可本质是线性所有权,不是普通值。",
"overgeneralizationRisk": "对普通不可变值滥用不可复制语义会增加调用复杂度而无安全收益。",
"principleIDs": [
"FOVEA-LAW-001",
"FOVEA-LAW-002"
],
"status": "promoted",
"title": "不可复制资源许可",
"transferBoundary": "适用于容量、锁票据、事务 lease 等必须恰好消费一次的内部能力值。",
"triggerProblem": "可复制 Permit 允许同一逻辑容量被复制后并发消费。"
},
{
"artifactPaths": [
"Sources/FoveaPersistence/FoveaManagedFileMetadata.swift"
],
"evidencePaths": [
"Tests/FoveaTests/FilesystemLinkDefenseTests.swift"
],
"evidenceTestIDs": [
"SEC-CASE-031"
],
"extractedAsset": "FoveaManagedFileMetadata centralizes secure host-side metadata validation; Akashic storage internals remain independently versioned behind the exact component pin.",
"id": "FOVEA-EGG-003",
"observation": "所有受管文件读取都需要同一组 O_NOFOLLOW、类型、属主和链接数不变量。",
"overgeneralizationRisk": "不能把单链接普通文件策略直接用于用户文档、共享 inode 或需要 symlink 语义的目录。",
"principleIDs": [
"FOVEA-LAW-001",
"FOVEA-LAW-003",
"FOVEA-LAW-014"
],
"status": "promoted",
"title": "受管文件元数据验证器",
"transferBoundary": "适用于应用容器内由 Akashic 管理的普通单链接文件。",
"triggerProblem": "FileManager 时间戳读取会跟随 symlink,使外部 inode 影响缓存淘汰。"
},
{
"artifactPaths": [
"Tests/FoveaTests/TestSupport.swift"
],
"evidencePaths": [
"Tests/FoveaTests/ResourceLimitTests.swift",
"Tests/FoveaTests/AuthenticationRefreshTests.swift",
"Tests/FoveaTests/SharedTaskTests.swift",
"Tests/FoveaTests/FoveaSystemPipelineTests.swift"
],
"evidenceTestIDs": [
"RES-PT-002"
],
"extractedAsset": "TestSupport.waitUntil 提供有截止时间、可取消、调用点失败定位的条件等待;测试以 transport 计数、诊断事件和 actor gate 表达阶段到达。",
"id": "FOVEA-EGG-004",
"observation": "并发测试应等待可观察状态,而不是等待推测时间。",
"overgeneralizationRisk": "忙轮询本身仍可能形成脆弱测试;优先使用 continuation、actor gate 或事件流。",
"principleIDs": [
"FOVEA-LAW-003",
"FOVEA-LAW-006",
"FOVEA-LAW-013"
],
"status": "promoted",
"title": "确定性阶段同步替代固定睡眠",
"transferBoundary": "适用于需要证明任务已进入特定阶段的并发测试。",
"triggerProblem": "ASan 和覆盖插桩改变启动速度后,依赖 20ms 固定睡眠的并发测试偶发失败。"
},
{
"artifactPaths": [
"Sources/FoveaHTTP/HTTPVary.swift"
],
"evidencePaths": [
"Tests/FoveaTests/VaryCacheTests.swift"
],
"evidenceTestIDs": [
"CACHE-PT-004"
],
"extractedAsset": "HTTPVarySelection 构造、选择和 Codable 解码共享唯一规范化实现。",
"id": "FOVEA-EGG-005",
"observation": "同一缓存身份语义存在多个规范化入口时会产生同义多键。",
"overgeneralizationRisk": "通用逗号拆分会破坏带引号或自定义字段语义。",
"principleIDs": [
"FOVEA-LAW-001",
"FOVEA-LAW-010",
"FOVEA-LAW-012"
],
"status": "promoted",
"title": "Vary 唯一规范化来源",
"transferBoundary": "适用于已知可安全规范化的 HTTP 列表字段;自定义字段只去除 OWS。",
"triggerProblem": "公开构造器与管线内部对 Accept-Language/Accept-Encoding 使用不同规范化规则。"
},
{
"artifactPaths": [
"docs/project-memory/component-pins.json",
"Tests/FoveaTests/ImageDecoderTests.swift"
],
"evidencePaths": [
"Tests/FoveaTests/ImageDecoderTests.swift"
],
"evidenceTestIDs": [
"SEC-CASE-004"
],
"extractedAsset": "The exact-pinned ImageCraftImageIO backend provides complete bounded container scanning, while Fovea retains host-level decoder and security integration tests.",
"id": "FOVEA-EGG-006",
"observation": "安全预算必须覆盖整个容器生命周期,而非只覆盖第一段可解码前缀。",
"overgeneralizationRisk": "手写容器解析若扩展到更多格式而无 corpus/fuzz,会扩大攻击面。",
"principleIDs": [
"FOVEA-LAW-004",
"FOVEA-LAW-008"
],
"status": "promoted",
"title": "完整容器扫描而非首标记早退",
"transferBoundary": "适用于当前静态 JPEG/PNG 安全预检,不等价于通用媒体解析器。",
"triggerProblem": "JPEG 解析在首个 SOS 返回,使后续扫描间 APP 元数据绕过预算;PNG IEND 后尾随数据被接受。"
},
{
"artifactPaths": [
"Sources/FoveaCore/PipelineCache.swift"
],
"evidencePaths": [
"Tests/FoveaTests/CacheRefreshTransactionTests.swift"
],
"evidenceTestIDs": [
"CACHE-PT-039"
],
"extractedAsset": "写前捕获旧 snapshot,并按 generation 活性选择恢复或删除。",
"id": "FOVEA-EGG-007",
"observation": "覆盖事务与首次插入事务需要不同回滚信息。",
"overgeneralizationRisk": "namespace 已撤销时恢复旧 snapshot 会复活无权限数据。",
"principleIDs": [
"FOVEA-LAW-001",
"FOVEA-LAW-002",
"FOVEA-LAW-008"
],
"status": "promoted",
"title": "同 variant 覆盖事务快照",
"transferBoundary": "适用于同 key 覆盖且失败时允许恢复旧值的事务。",
"triggerProblem": "200 覆盖旧 record 后取消,回滚删除新 record 却未恢复旧 record。"
},
{
"artifactPaths": [
"Sources/FoveaCore/Diagnostics.swift",
"Sources/FoveaHTTP/TransportNetworkMetrics.swift"
],
"evidencePaths": [
"Tests/FoveaTests/DiagnosticsTests.swift",
"Tests/FoveaTests/URLSessionTransportTests.swift"
],
"evidenceTestIDs": [
"DIAG-PT-013"
],
"extractedAsset": "DiagnosticEvent 构造与 Codable 解码共享摘要、数值、时长和协议集合上界。",
"id": "FOVEA-EGG-008",
"observation": "隐私清洗应在结构化事件构造边界完成,而不是依赖每个 exporter 补救。",
"overgeneralizationRisk": "过度清洗可能损失调试价值;新增字段需明确有限词汇和单位。",
"principleIDs": [
"FOVEA-LAW-004",
"FOVEA-LAW-006",
"FOVEA-LAW-011"
],
"status": "promoted",
"title": "诊断边界前移",
"transferBoundary": "适用于 Fovea 公共诊断模型,不替代宿主对额外日志字段的治理。",
"triggerProblem": "OSLog 出口会过滤非法 keyDigest,但内存 sink 和自定义出口仍可能接触原始自由文本。"
},
{
"artifactPaths": [
"scripts/run-critical-mutants.py",
"scripts/validate-critical-mutation-report.py"
],
"evidencePaths": [
"docs/schemas/critical-mutation-report.schema.json"
],
"evidenceTestIDs": [
"AIQA-GATE-010"
],
"extractedAsset": "树绑定 checkpoint、源码定位更新、invalid 硬失败和报告摘要校验。",
"id": "FOVEA-EGG-009",
"observation": "变异测试工具本身会随架构腐化,invalid 不能被当作 killed。",
"overgeneralizationRisk": "只追求 mutant 数量会鼓励低价值或等价变异。",
"principleIDs": [
"FOVEA-LAW-009",
"FOVEA-LAW-013",
"FOVEA-LAW-014"
],
"status": "promoted",
"title": "变异目录自校准",
"transferBoundary": "适用于当前 curated critical mutants;不替代通用 mutation engine。",
"triggerProblem": "职责拆分后 13 个关键 mutant 因源码定位过时而变成 invalid。"
},
{
"artifactPaths": [
"scripts/check-structural-quality.py"
],
"evidencePaths": [
"docs/specifications/pipeline-configuration.md"
],
"evidenceTestIDs": [
"PIPE-PT-010"
],
"extractedAsset": "结构门同时约束文件规模、函数复杂度、类型规模、模块文件数和依赖环。",
"id": "FOVEA-EGG-010",
"observation": "降低单文件复杂度可能把认知成本迁移为文件和依赖碎片。",
"overgeneralizationRisk": "固定阈值不能替代对领域内聚和调用图的人工判断。",
"principleIDs": [
"FOVEA-LAW-010",
"FOVEA-LAW-012"
],
"status": "promoted",
"title": "职责拆分必须同时限制碎片化",
"transferBoundary": "适用于当前 Swift 模块规模的启发式门禁。",
"triggerProblem": "拆分 PipelineFailure 和 FetchStage 后,FoveaCore 文件数超过模块上限。"
},
{
"artifactPaths": [
"Examples/FoveaWorkbenchApp/FoveaWorkbench/Views/WorkbenchRootView.swift",
"Examples/FoveaWorkbenchApp/FoveaWorkbench/Models/EcologicalAtlas.swift",
"Examples/FoveaWorkbenchApp/FoveaWorkbench/Resources/ecological-atlas.json",
"Examples/FoveaWorkbenchApp/FoveaWorkbench/Views/EcologicalAtlasHomeView.swift",
"Examples/FoveaWorkbenchApp/FoveaWorkbench/Views/EcologicalStoryView.swift"
],
"evidencePaths": [
"Examples/FoveaWorkbenchApp/FoveaWorkbenchUITests/FoveaWorkbenchUITests.swift",
"Examples/FoveaWorkbenchApp/FoveaWorkbenchUITests/FoveaWorkbenchIPadUITests.swift"
],
"evidenceTestIDs": [
"DEMO-PT-021",
"DEMO-PT-022",
"DEMO-PT-023",
"DEMO-PT-024",
"DEMO-PT-025",
"DEMO-PT-026",
"DEMO-PT-027",
"DEMO-PT-028"
],
"extractedAsset": "理解、验证、证据、设置四层信息架构;理解层由 8 卷、32 专题、8 种媒体表面和 160 个媒体身份组成,并以机制—分配—争议—综合判断组织内容,完整图片实验场仍从二级入口可达。",
"id": "FOVEA-EGG-011",
"observation": "系统内部领域分类适合实现所有权,不等于用户心智模型。公共叙事只有在内容 schema、证据标签、争议结构和图片负载契约都可执行时,才是真实宿主而不是议题包装。",
"overgeneralizationRisk": "专题数量和页面样式不等于内容深度;若来源闭包、反方论证、图片身份或 UI 自动化缺失,复杂界面仍可能只是装饰。",
"principleIDs": [
"FOVEA-LAW-010",
"FOVEA-LAW-012",
"FOVEA-LAW-013",
"FOVEA-LAW-014"
],
"status": "promoted",
"title": "叙事任务优先且证据分层的信息架构",
"transferBoundary": "适用于示例、诊断和开发者工具的信息架构;生产 App 仍应依据自己的核心任务、用户研究和平台习惯设计。",
"triggerProblem": "旧九章入口覆盖议题和图片场景不足,且详情页高度同构,无法承担生态超载的系统性叙事和真实宿主压力。"
},
{
"artifactPaths": [
"Examples/FoveaWorkbenchApp/FoveaWorkbench/Models/WorkbenchRemoteAsset.swift",
"Examples/FoveaWorkbenchApp/FoveaWorkbench/Views/WorkbenchRemoteAssetViews.swift",
"Examples/FoveaWorkbenchApp/FoveaWorkbench/Networking/WorkbenchRequestFactory.swift",
"Examples/FoveaWorkbenchApp/FoveaWorkbenchLiveTests/FoveaWorkbenchLiveNetworkTests.swift"
],
"evidencePaths": [
"Examples/FoveaWorkbenchApp/FoveaWorkbenchTests/FoveaWorkbenchTests.swift",
"Examples/FoveaWorkbenchApp/FoveaWorkbenchTests/FoveaWorkbenchIntegrationTests.swift",
"Examples/FoveaWorkbenchApp/FoveaWorkbenchUITests/FoveaWorkbenchUITests.swift"
],
"evidenceTestIDs": [
"DEMO-PT-001",
"DEMO-PT-005",
"DEMO-PT-006",
"DEMO-PT-009",
"DIAG-PT-011"
],
"extractedAsset": "带作者、许可、原始尺寸和来源页的真实素材目录;普通交互默认真实 HTTPS;UI/集成测试使用 deterministicDefaults;Live XCTest 通过官方管线验证重定向、协议指标、目标像素和缓存复用。",
"id": "FOVEA-EGG-012",
"observation": "确定性 origin 能证明协议和状态机语义,却不能证明真实网络集成;真实公网能暴露环境路径,却不能替代稳定回归。两类证据互补且必须互不冒充。",
"overgeneralizationRisk": "把真实网络默认扩展到 CI、后台任务或隐式遥测会产生不可控副作用;把确定性替身当作用户体验又会隐藏真实集成缺陷。",
"principleIDs": [
"FOVEA-LAW-003",
"FOVEA-LAW-006",
"FOVEA-LAW-011",
"FOVEA-LAW-013",
"FOVEA-LAW-014"
],
"status": "promoted",
"title": "真实与确定性双证据通道",
"transferBoundary": "真实公网只提供环境证据;第三方可用性、限流和代理状态不能成为确定性合并门。许可目录仅覆盖已登记素材,不能授权任意远程图片。",
"triggerProblem": "Workbench 的主要图片体验长期只使用 fovea-demo.test 合成色块,真实网络被藏在末级页面,导致 Demo 无法证明 DNS、TLS、重定向、CDN、真实照片几何和产品组合。"
},
{
"artifactPaths": [
"Examples/FoveaWorkbenchApp/FoveaWorkbench/Views/WorkbenchLabComponents.swift",
"Examples/FoveaWorkbenchApp/FoveaWorkbenchUITests/FoveaWorkbenchUITests.swift"
],
"evidencePaths": [
"Examples/FoveaWorkbenchApp/FoveaWorkbenchUITests/FoveaWorkbenchUITests.swift"
],
"evidenceTestIDs": [
"DEMO-PT-009",
"UI-PT-019"
],
"extractedAsset": "所有证据 metric 使用独立稳定 ID;中文标题只负责显示。UI 测试按稳定 ID 定位,再对可访问值和用户文案分别断言。",
"id": "FOVEA-EGG-013",
"observation": "用户文案属于可翻译、可重写的表现层;测试、导航、深链和证据引用属于稳定语义身份。由文案派生身份会让可读性改进与自动化稳定性互相冲突。",
"overgeneralizationRisk": "无边界地冻结所有内部标识会形成兼容负担;只有跨版本、跨语言或外部证据真正引用的身份才应稳定。",
"principleIDs": [
"FOVEA-LAW-001",
"FOVEA-LAW-003",
"FOVEA-LAW-012",
"FOVEA-LAW-013"
],
"status": "promoted",
"title": "本地化文案与稳定自动化身份解耦",
"transferBoundary": "适用于 accessibility identifier、自动化 selector、深链和证据 schema;普通临时布局元素不必全部获得公共稳定 ID。",
"triggerProblem": "证据指标从英文改为中文后,accessibility identifier 由显示标题动态生成,导致缓存 UI 测试无法定位原有 origin 指标。"
},
{
"artifactPaths": [
"Examples/FoveaWorkbenchApp/project.yml",
"Examples/FoveaWorkbenchApp/FoveaWorkbenchLiveTests/Info.plist",
"Examples/FoveaWorkbenchApp/FoveaWorkbenchLiveTests/FoveaWorkbenchLiveNetworkTests.swift",
"scripts/verify-ios-example.py"
],
"evidencePaths": [
"Examples/FoveaWorkbenchApp/FoveaWorkbenchLiveTests/FoveaWorkbenchLiveNetworkTests.swift",
"scripts/verify-ios-example.py"
],
"evidenceTestIDs": [
"DEMO-PT-001",
"DEMO-PT-005",
"DIAG-PT-011"
],
"extractedAsset": "Live target 纳入共享 scheme;显式 XCTest Info.plist 接收构建授权;验证器注入 build setting 并拒绝 skipped;Live 矩阵区分核心不变量与瞬时环境不可用,同时要求至少三个独立 origin 成功。",
"id": "FOVEA-EGG-014",
"observation": "环境测试是否存在、是否被选择、授权是否进入测试进程、是否真实执行、如何分类第三方故障是五个不同条件;任何一环缺失都不能形成环境证据。",
"overgeneralizationRisk": "把所有 HTTP 错误都归类为环境故障会掩盖 fixture 漂移和产品缺陷;只允许明确瞬态状态与可重试 transport 进入环境不可用集合,并要求最低成功 origin 数。",
"principleIDs": [
"FOVEA-LAW-001",
"FOVEA-LAW-003",
"FOVEA-LAW-006",
"FOVEA-LAW-011",
"FOVEA-LAW-013",
"FOVEA-LAW-014"
],
"status": "promoted",
"title": "可执行的环境证据授权链",
"transferBoundary": "适用于依赖公网、真机、外部服务或硬件的环境证据;确定性单元测试不应引入同样的外部可用性容错。",
"triggerProblem": "完整验证脚本宣称运行 Live XCTest,但 target 不在 scheme;加入 scheme 后 shell 环境又没有进入测试进程,最终出现“0 失败、实际全部 skipped”的假绿灯。"
},
{
"artifactPaths": [
"Sources/FoveaCore/Identity.swift",
"Sources/FoveaCore/ImageLoadCoordinator.swift",
"Sources/FoveaCore/ImageDeliveryCoordinator.swift"
],
"evidencePaths": [
"Tests/FoveaTests/DiagnosticsTests.swift",
"Examples/FoveaWorkbenchApp/FoveaWorkbenchTests/FoveaWorkbenchIntegrationTests.swift"
],
"evidenceTestIDs": [
"CACHE-PT-006",
"DEMO-PT-009"
],
"extractedAsset": "ContentID 可从持久规范描述重新验证并恢复;fresh record 先构造 RenderKey 查询 rendered-memory,未命中才读取原编码磁盘。诊断分别证明 memory hit 不伴随 originalEncodedHit,管线重开仍可从磁盘恢复且不回源。",
"id": "FOVEA-EGG-015",
"observation": "经过验证的 RepresentationRecord 已持有规范 ContentID;RenderKey 所需信息在读取 payload 前已经完整。先读磁盘只是历史执行顺序,不是正确性前提。",
"overgeneralizationRisk": "若把未经验证的摘要直接转成 RenderKey,会把持久元数据损坏或跨代身份污染带入内存缓存;优化不能绕过记录与 generation 校验。",
"principleIDs": [
"FOVEA-LAW-001",
"FOVEA-LAW-003",
"FOVEA-LAW-007",
"FOVEA-LAW-010",
"FOVEA-LAW-014"
],
"status": "promoted",
"title": "持久内容身份驱动内存先于磁盘",
"transferBoundary": "只适用于持久记录中的 ContentID、payloadLength 和 generation 已通过 schema 与边界验证的 fresh reusable state;stale、no-store、损坏记录和 generation 不匹配仍必须走原有验证路径。",
"triggerProblem": "滚动回屏即使最终命中 rendered-memory,旧路径仍先读取完整原编码文件并重算 ContentID,导致磁盘 I/O 进入可见延迟。"
},
{
"artifactPaths": [
"Sources/FoveaSwiftUI/FoveaImagePhaseContent.swift"
],
"evidencePaths": [
"Tests/FoveaTests/SwiftUIViewRenderingTests.swift"
],
"evidenceTestIDs": [
"UI-PT-019",
"DEMO-PT-007"
],
"extractedAsset": "`.empty` 保持透明;只有 placeholder delay 到期并进入 `.loading` 后才构造骨架。对应渲染测试证明 empty 不调用 placeholder,loading/cancelled 才调用。",
"id": "FOVEA-EGG-016",
"observation": "占位是“等待超过感知阈值”的反馈,不是所有尚未发布图片状态的同义词。初始空状态、延迟加载状态和取消状态具有不同用户语义。",
"overgeneralizationRisk": "无条件隐藏所有初始反馈会让真实慢网络出现空白;透明 empty 必须与延迟后可见 loading、失败和无障碍状态共同设计。",
"principleIDs": [
"FOVEA-LAW-003",
"FOVEA-LAW-005",
"FOVEA-LAW-012",
"FOVEA-LAW-013",
"FOVEA-LAW-014"
],
"status": "promoted",
"title": "空状态不等于加载占位",
"transferBoundary": "适用于具有明确 placeholder delay 的声明式图片视图;首屏必须立即展示固定占位图的产品可以显式把延迟设为零或在宿主外层提供静态背景。",
"triggerProblem": "SwiftUI Cell 每次重新创建都会先进入 `.empty`;旧 phase renderer 立即构造 placeholder,导致几毫秒内完成的内存命中仍先闪一次 loading。"
},
{
"artifactPaths": [
"scripts/generate-workbench-media-catalog.py",
"Examples/FoveaWorkbenchApp/FoveaWorkbench/Resources/workbench-media-catalog.json",
"Examples/FoveaWorkbenchApp/FoveaWorkbench/Resources/ecological-atlas.json",
"Examples/FoveaWorkbenchApp/FoveaWorkbench/Views/EcologicalMethodologyView.swift",
"scripts/check-architecture-boundaries.py"
],
"evidencePaths": [
"Examples/FoveaWorkbenchApp/FoveaWorkbenchTests/FoveaWorkbenchTests.swift",
"Examples/FoveaWorkbenchApp/README.md"
],
"evidenceTestIDs": [
"DEMO-PT-005",
"DEMO-PT-021",
"DEMO-PT-022"
],
"extractedAsset": "通用图库保留严格默认准入;生态图谱另有版本化情境审查,覆盖肉食、未成年人、战争、疾病、伤害、贫困与迁徙,并要求必要性、来源、尊严、年龄适宜性、非猎奇、替代文本和避免污名化。",
"id": "FOVEA-EGG-017",
"observation": "版权许可只回答能否依法使用,题材关键词也不能独自回答是否应该展示。肉食、未成年人、战争、疾病或伤害既不应自动通过,也不应自动拒绝;目的、上下文、权力关系和可避免伤害必须共同进入决定。",
"overgeneralizationRisk": "情境审查不能退化为“价值观正向即可使用”的宽免;敏感素材仍需逐项来源、尊严、受众与必要性记录。自动关键词只适合发现候选风险,不能替代人工判断。",
"principleIDs": [
"FOVEA-LAW-001",
"FOVEA-LAW-003",
"FOVEA-LAW-011",
"FOVEA-LAW-012",
"FOVEA-LAW-013",
"FOVEA-LAW-014"
],
"status": "promoted",
"title": "许可、默认准入与情境伦理三层治理",
"transferBoundary": "适用于项目维护并分发的示例和教育素材。普通图库可采用更严格默认规则;有明确公共利益的叙事可以进入情境审查,但不得绕过合法性、隐私、尊严和年龄适宜性。",
"triggerProblem": "旧素材治理把敏感关键词一律当作伦理结论,既会漏掉隐晦伤害,也会阻止必要的公共教育图像,无法表达“为什么展示”和“怎样展示”。"
},
{
"artifactPaths": [
"Examples/FoveaWorkbenchApp/FoveaWorkbench/Models/WorkbenchRemoteAsset.swift",
"Examples/FoveaWorkbenchApp/FoveaWorkbench/App/WorkbenchPrefetchCoordinator.swift",
"Examples/FoveaWorkbenchApp/FoveaWorkbench/Views/WorkbenchDiscoverView.swift",
"Examples/FoveaWorkbenchApp/FoveaWorkbench/Views/WorkbenchScenarioStudioView.swift"
],
"evidencePaths": [
"Examples/FoveaWorkbenchApp/FoveaWorkbenchTests/FoveaWorkbenchTests.swift",
"Examples/FoveaWorkbenchApp/FoveaWorkbenchUITests/FoveaWorkbenchUITests.swift"
],
"evidenceTestIDs": [
"DEMO-PT-005",
"DEMO-PT-007",
"DEMO-PT-009"
],
"extractedAsset": "静态 448 项目录使用稳定素材 ID;首页每批 48 项并预取有限窗口;场景工坊按任务选择 8–200 项;Feed 支持 2,000 Cell 但最多 300 个唯一网络资源;预取成功才记账,管线代际改变时重置完成集。",
"id": "FOVEA-EGG-018",
"observation": "素材数量、可见视图数量、并发请求数量和缓存身份是四个独立维度。真实目录可以很大,但任何时刻的 UI 与网络工作集必须有界且可解释。",
"overgeneralizationRisk": "把预取窗口写成固定常数会忽略设备、网络和容器差异;当前数字是示例工作负载边界,不是公共 API 或全局最佳值。",
"principleIDs": [
"FOVEA-LAW-002",
"FOVEA-LAW-003",
"FOVEA-LAW-005",
"FOVEA-LAW-010",
"FOVEA-LAW-011",
"FOVEA-LAW-014"
],
"status": "promoted",
"title": "大规模媒体目录需要稳定身份、分页与有界预取",
"transferBoundary": "适用于静态或可分页的图片目录;无限服务端 Feed 还需要游标、请求背压、磁盘配额和服务端失效策略,不能仅依赖本地静态清单。",
"triggerProblem": "把 9 张图片扩展到数百张后,若一次性构造全部 SwiftUI Cell、把视图刷新 UUID 放进资源身份或无界预取,会把真实性改进转化为内存、网络和缓存抖动。"
},
{
"artifactPaths": [
"docs/specifications/mathematical-assurance.md"
],
"evidencePaths": [
"scripts/analyze-mathematical-architecture.py",
"scripts/model-check-cache-transactions.py",
"scripts/analyze-cache-policies.py"
],
"evidenceTestIDs": [
"MATH-PT-001",
"MATH-PT-002",
"MATH-PT-004"
],
"extractedAsset": "建立数学保证规范,要求每项结论同时记录状态域、输入域、假设、反例条件、工件和不能外推的范围。",
"id": "FOVEA-EGG-019",
"observation": "定理、有限穷举、精确离线 oracle、模型式差分和经验测量具有不同量词与外推边界;压缩成一个分数会丢失最重要的真实性信息。",
"overgeneralizationRisk": "若把证据等级变成繁琐审批表,会增加文档成本而不提高正确性;只对高风险或带强结论的变更要求完整证明义务。",
"principleIDs": [
"FOVEA-LAW-001",
"FOVEA-LAW-009",
"FOVEA-LAW-013",
"FOVEA-LAW-014"
],
"status": "promoted",
"title": "数学证据分层而非单一总分",
"transferBoundary": "适用于需要声称正确性、最优性或覆盖完整性的工程结论;普通局部重构不必引入形式模型,但仍应避免无边界的绝对措辞。",
"triggerProblem": "数学术语很容易被用于装饰经验结论,把合成基准、有限模型和定理假设混成“已证明最佳”。"
},
{
"artifactPaths": [
"scripts/analyze-mathematical-architecture.py",
"docs/specifications/mathematical-assurance.md"
],
"evidencePaths": [
".swift-format",
"Package.swift"
],
"evidenceTestIDs": [
"MATH-PT-001"
],
"extractedAsset": "树绑定架构图分析器计算 SCC、拓扑层级、传递依赖、Brandes 介数中心性、HHI 和稳定依赖方向,并对硬不变量失败关闭。",
"id": "FOVEA-EGG-020",
"observation": "Package 声明与源码 import 可以组成可执行有向图;环、隐藏边和扇出是硬不变量,中心性与不稳定度则是审查信号而非自动裁决。",
"overgeneralizationRisk": "机械追求最低边数会制造巨型模块;图指标只定位需要解释的热点,不能替代职责语义。",
"principleIDs": [
"FOVEA-LAW-001",
"FOVEA-LAW-010",
"FOVEA-LAW-013"
],
"status": "promoted",
"title": "架构作为有向图持续验证",
"transferBoundary": "适用于静态模块依赖;运行时回调、协议注入和数据流耦合仍需其他分析,中心性高也不自动意味着架构错误。",
"triggerProblem": "模块边界过去主要依赖人工审查,无法持续发现隐藏 import、依赖环、扇出增长和核心枢纽继续集中。"
},
{
"artifactPaths": [
"scripts/analyze-cache-policies.py",
"docs/specifications/mathematical-assurance.md"
],
"evidencePaths": [
".artifacts/mathematics/cache-policies.json"
],
"evidenceTestIDs": [
"MATH-PT-004"
],
"extractedAsset": "缓存策略分析器对 LRU、SIEVE、GDSF 和频率密度准入运行多类 trace,并用动态规划 oracle 校验结果上界。",
"id": "FOVEA-EGG-021",
"observation": "有限 trace 可以枚举所有可行缓存集合并得到精确离线最优值;在线策略应按避免代价、字节命中、元数据开销和 regret 多维比较。",
"overgeneralizationRisk": "针对合成 trace 调参会过拟合;oracle 只能评价给定未来请求序列,不能在在线环境直接实现。",
"principleIDs": [
"FOVEA-LAW-005",
"FOVEA-LAW-006",
"FOVEA-LAW-009",
"FOVEA-LAW-014"
],
"status": "promoted",
"title": "缓存策略用精确 oracle 与 regret 比较",
"transferBoundary": "精确性只覆盖有限离散 trace;生产策略切换还必须依赖真实负载、CPU 开销、内存压力和可回滚实验。",
"triggerProblem": "仅凭命中率或流行算法名称选择缓存策略,无法处理对象尺寸、重取代价、阶段切换和扫描污染。"
},
{
"artifactPaths": [
"scripts/model-check-cache-transactions.py"
],
"evidencePaths": [
".artifacts/mathematics/cache-state-model.json"
],
"evidenceTestIDs": [
"MATH-PT-002"
],
"extractedAsset": "缓存事务模型穷举 generation、record、blob、rendered 与覆盖事务状态,并内置五个错误模型,全部必须被杀死。",
"id": "FOVEA-EGG-022",
"observation": "除验证规范模型外,还应注入已知错误转移并要求产生最短反例;这相当于对形式模型执行变异测试。",
"overgeneralizationRisk": "错误模型集合本身不完整;杀死内置 mutant 不能证明所有规范缺陷都可检测。",
"principleIDs": [
"FOVEA-LAW-001",
"FOVEA-LAW-003",
"FOVEA-LAW-008",
"FOVEA-LAW-009",
"FOVEA-LAW-013"
],
"status": "promoted",
"title": "有限模型必须自证能发现错误",
"transferBoundary": "适用于能够抽象为有限状态的高风险协议;模型与 Swift 实现之间仍需事件映射、集成测试和实现级变异门。",
"triggerProblem": "一个始终通过的模型检查器可能只是模型过弱或不变量遗漏,无法证明其对真实错误敏感。"
},
{
"artifactPaths": [
"Sources/FoveaCore/AsyncPermitPool.swift",
"Sources/FoveaCore/DecodeStage.swift",
"scripts/model-check-permit-scheduler.py"
],
"evidencePaths": [
"Tests/FoveaTests/PrioritySchedulingTests.swift",
"scripts/model-check-permit-scheduler.py"
],
"evidenceTestIDs": [
"SCHED-PT-018",
"SCHED-PT-019",
"SCHED-PT-020"
],
"extractedAsset": "AsyncPermitPool 在普通状态按优先级、较小 workEstimate 和 FIFO 排序;八次普通绕过后为最老饥饿 waiter 保留未来足量容量并排空碎片,新到请求不能通过立即获取快路径穿透保留。",
"id": "FOVEA-EGG-023",
"observation": "同优先级短工作优先可降低局部平均完成时间,但带权资源的活性不能只靠“可装入请求中的优先排序”。容量碎片会使已老化的大请求永久不适配当前空闲量,必须把未来容量保留纳入状态机。",
"overgeneralizationRisk": "容量保留会暂时降低利用率,且仍依赖已授予任务最终释放;若工作估计极差或任务挂死,需由超时、租约和观测补充,不能宣称任意负载下全局最优。",
"principleIDs": [
"FOVEA-LAW-004",
"FOVEA-LAW-005",
"FOVEA-LAW-010",
"FOVEA-LAW-014"
],
"status": "promoted",
"title": "最短工作优先、容量保留与有限饥饿",
"transferBoundary": "适用于单一可加总许可资源且每个请求单位数不超过总容量的调度;八次是进入容量保留的普通绕过上限,不是所有任务的总完成名次或时间上界。",
"triggerProblem": "旧算法只在请求能装入当前空闲容量时提升饥饿 waiter;持续的一单位小请求可利用碎片让需要全部容量的大请求无限等待。"
},
{
"artifactPaths": [
"Tests/FoveaTests/Conformance/Mathematics/cache-decision-domain.json",
"scripts/check-cache-decision-domain.py"
],
"evidencePaths": [
"Tests/FoveaTests/HTTPCachePolicyTests.swift"
],
"evidenceTestIDs": [
"MATH-PT-003"
],
"extractedAsset": "同一 JSON 规范驱动 128 个实际 HTTPCachePolicy 组合和独立 Python MC/DC 见证检查。",
"id": "FOVEA-EGG-024",
"observation": "对显式有限因子域可以执行完整笛卡尔积;MC/DC 再验证每个条件在其他条件固定时能够独立改变决策。",
"overgeneralizationRisk": "因子划分遗漏语义类别时,完整笛卡尔积仍可能漏错;每次协议扩展都必须审查因子模型。",
"principleIDs": [
"FOVEA-LAW-001",
"FOVEA-LAW-009",
"FOVEA-LAW-013"
],
"status": "promoted",
"title": "有限决策域全枚举与 MC/DC 双证据",
"transferBoundary": "只对声明的离散因素和取值完整;任意 HTTP 字符串仍需语法一致性、边界与模糊测试。",
"triggerProblem": "单个 happy-path 测试无法证明缓存准入条件之间的交互,也无法说明每个布尔条件是否独立影响结果。"
},
{
"artifactPaths": [
"docs/project-memory/component-pins.json",
"Tests/FoveaTests/MemoryCacheTests.swift"
],
"evidencePaths": [
"Tests/FoveaTests/MemoryCacheTests.swift"
],
"evidenceTestIDs": [
"MATH-PT-007",
"MATH-PT-008"
],
"extractedAsset": "The exact-pinned AkashicMemory SIEVE implementation is continuously compared with the Fovea host reference and integration histories.",
"id": "FOVEA-EGG-025",
"observation": "固定种子状态机可以把链表实现与不同数据结构的参考模型逐步比较;扫描污染回归还必须用独立最小场景表达,而不能只依赖随机序列。",
"overgeneralizationRisk": "真实实现与参考模型可能共享同一误解;随机序列也不保证覆盖所有边界,因此最小反例仍需固化。",
"principleIDs": [
"FOVEA-LAW-001",
"FOVEA-LAW-009",
"FOVEA-LAW-013"
],
"status": "promoted",
"title": "SIEVE 真实实现与独立参考模型持续差分",
"transferBoundary": "适用于存在可独立实现小型参考模型的数据结构;并发线性化仍需专门历史检查或模型。",
"triggerProblem": "少量手写缓存示例不能覆盖 visited 清位、循环指针、删除当前指针、更新、超限和清空之间的长序列交互。"
},
{
"artifactPaths": [
"Examples/FoveaWorkbenchApp/FoveaWorkbench/App/WorkbenchPrefetchPlanner.swift",
"Examples/FoveaWorkbenchApp/FoveaWorkbench/App/WorkbenchPrefetchCoordinator.swift"
],
"evidencePaths": [
"Examples/FoveaWorkbenchApp/FoveaWorkbenchTests/FoveaWorkbenchTests.swift"
],
"evidenceTestIDs": [
"MATH-PT-006"
],
"extractedAsset": "WorkbenchPrefetchPlanner 保存最近 128 个延迟样本,以经验分布分位数和 DKW–Massart 置信带调整目标尾部,再结合消费速率、静态回退、发布余量与硬窗口计算建议预取数。",
"id": "FOVEA-EGG-026",
"observation": "有限样本均值和方差直接代入 Cantelli 不保留原定理保证;经验分布一致置信带能让样本量、置信水平和目标尾部之间保持更直接的可审计关系。",
"overgeneralizationRisk": "DKW 的严格覆盖率要求固定 i.i.d. 样本;滚动窗口、相关请求和网络非平稳会破坏该解释,因此结果仍是有界风险调节,不是生产漏载概率 SLA。",
"principleIDs": [
"FOVEA-LAW-004",
"FOVEA-LAW-005",
"FOVEA-LAW-006",
"FOVEA-LAW-014"
],
"status": "promoted",
"title": "经验分布置信带驱动有界预取",
"transferBoundary": "适用于可估计消费速度、样本可观测且预取可取消的滚动场景;必须保留样本窗口、静态回退、硬上限和关闭选项,并单独监控分布漂移。",
"triggerProblem": "固定窗口不能适应延迟,而有限样本 Cantelli 插件既没有原定理概率保证,又因历史最大值钳制常使风险参数失效。"
},
{
"artifactPaths": [
"docs/project-memory/component-pins.json",
"Sources/FoveaCore/PipelineCache.swift",
"scripts/analyze-cache-policies.py"
],
"evidencePaths": [
"Tests/FoveaTests/MemoryCacheTests.swift",
"scripts/analyze-cache-policies.py"
],
"evidenceTestIDs": [
"MATH-PT-004",
"MATH-PT-007",
"MATH-PT-008"
],
"extractedAsset": "The default composition uses exact-pinned AkashicMemory SIEVE; alternative policies remain in offline comparison and are admitted only through trace and cost evidence.",
"id": "FOVEA-EGG-027",
"observation": "离线 oracle 与 NSDI 2024 大规模 trace 的方向一致:惰性访问位能降低命中路径维护和扫描污染,但不存在对所有 trace 的无条件支配。",
"overgeneralizationRisk": "SIEVE 不利用对象大小和 miss cost,真实工作负载若由高代价稀有对象主导,可能被价值密度或学习增强策略击败。",
"principleIDs": [
"FOVEA-LAW-001",
"FOVEA-LAW-004",
"FOVEA-LAW-005",
"FOVEA-LAW-013",
"FOVEA-LAW-014"
],
"status": "promoted",
"title": "SIEVE 单一生产状态机与离线策略竞争",
"transferBoundary": "适用于成本有界、热点与扫描混合的进程内对象缓存;磁盘 GC 的持久 recency、CDN 和数据库缓存具有不同写放大与一致性约束。",
"triggerProblem": "RenderedMemory 的逐命中 LRU 改链表增加 actor 热路径写操作,并在混合成本、循环画廊和真实回屏 trace 上出现显著 regret。"
},
{
"artifactPaths": [
"Sources/FoveaCore/SharedTaskRegistry.swift",
"scripts/model-check-shared-task-registry.py"
],
"evidencePaths": [
"Tests/FoveaTests/SharedTaskTests.swift",
"scripts/model-check-shared-task-registry.py"
],
"evidenceTestIDs": [
"MATH-PT-011",
"SCHED-PT-010",
"SCHED-PT-015",
"SCHED-PT-016",
"SCHED-PT-025",
"CACHE-PT-049"
],
"extractedAsset": "single-flight 状态机显式绑定 taskID/leaseID;exact-key completed handoff 只有有界租约,并可被下游负证明安全撤销而不触及 active task。",
"id": "FOVEA-EGG-028",
"observation": "有限历史显示最小安全条件包括 completion 检查 taskID、lease expiry 检查 leaseID、join 清除 orphan lease,以及负证明仅删除 completed exact-key 条目;active task 与其他 key 必须保持不可达。",
"overgeneralizationRisk": "有限模型不证明 Swift Task 调度器本身,也不覆盖无限 key、外部存储或任意回调重入。",
"principleIDs": [
"FOVEA-LAW-001",
"FOVEA-LAW-004",
"FOVEA-LAW-009",
"FOVEA-LAW-013"
],
"status": "promoted",
"title": "任务与租约双版本戳形成最小 ABA 防线",
"transferBoundary": "适用于旧异步回调可能晚于对象替换的 actor/注册表;跨进程租约还需要持久世代和崩溃恢复协议。",
"triggerProblem": "同 key 任务完成、取消、detach、重新订阅和旧租约到期交错时,旧异步事件可能删除或取消替换后的当前任务。"
},
{
"artifactPaths": [
"Sources/FoveaCore/TargetGeometry.swift"
],
"evidencePaths": [
"Tests/FoveaTests/TargetGeometryTests.swift"
],
"evidenceTestIDs": [
"MATH-PT-009",
"MATH-PT-010",
"GEO-PT-005",
"GEO-PT-007"
],
"extractedAsset": "当前 schema 2 在阈值前使用线性桶,之后按 6.4% 相对增量量化;全枚举验证尺寸比、面积比和身份数量。",
"id": "FOVEA-EGG-029",
"observation": "小尺寸需要绝对精度,大尺寸成本更接近相对尺度;混合线性/几何桶能同时保持不欠采样和恒定相对膨胀边界。",
"overgeneralizationRisk": "像素面积上界不能替代视觉质量评估,过大的相对步长仍可能造成明显清晰度跳变。",
"principleIDs": [
"FOVEA-LAW-001",
"FOVEA-LAW-004",
"FOVEA-LAW-005",
"FOVEA-LAW-006",
"FOVEA-LAW-014"
],
"status": "promoted",
"title": "目标像素使用相对误差几何量化",
"transferBoundary": "适用于向上量化的目标像素身份;感知编码质量、HDR 和缩放核仍需独立率失真研究。",
"triggerProblem": "固定 16px 线性桶在大窗口拖动和分屏变化中产生大量近等价 DecodeKey,却只提供绝对误差而没有相对资源膨胀界。"
},
{
"artifactPaths": [
"Sources/FoveaCore/TransportRetryPolicy.swift",
"Sources/FoveaCore/FetchRetryController.swift",
"scripts/analyze-retry-jitter.py"
],
"evidencePaths": [
"Tests/FoveaTests/RetryPolicyTests.swift",
"scripts/analyze-retry-jitter.py"
],
"evidenceTestIDs": [
"MATH-PT-012",
"MATH-PT-013",
"ERR-PT-003",
"ERR-PT-004"
],
"extractedAsset": "当前 retry schema 2 固定使用 U(0, cap) full jitter,删除 jitterPermille;精确桶模型和 10,000 客户端模拟量化峰值与碰撞下降。",
"id": "FOVEA-EGG-030",
"observation": "full jitter 扩大定时器占用支持并降低成对碰撞;服务端 Retry-After 必须作为不可下穿下界,同时保留次数、总延迟和额外字节预算。",
"overgeneralizationRisk": "full jitter 可产生零延迟样本,若删除尝试/总延迟预算或把可重试分类放宽,仍可能形成请求风暴。",
"principleIDs": [
"FOVEA-LAW-001",
"FOVEA-LAW-004",
"FOVEA-LAW-005",
"FOVEA-LAW-013",
"FOVEA-LAW-014"
],
"status": "promoted",
"title": "Full jitter 与 Retry-After 下界共同治理重试同步",
"transferBoundary": "适用于有限 HTTP 客户端重试;不能从单轮定时器碰撞推导任意到达过程或服务器队列的全局稳定。",
"triggerProblem": "旧 ±20% 抖动支持区间窄,且负抖动可能把实际睡眠降到 Retry-After 以下,既增加同步碰撞又违反服务器节流意图。"
},
{
"artifactPaths": [
"docs/research/mathematical-theory-registry.json",
"scripts/check-mathematical-research.py",
"docs/specifications/mathematical-assurance.md"
],
"evidencePaths": [
"scripts/check-mathematical-research.py",
"docs/research/mathematical-theory-registry.json"
],
"evidenceTestIDs": [
"MATH-PT-015"
],
"extractedAsset": "15 项、9 领域的数学理论注册表与门禁;Robust Gittins、在线共形、学习增强缓存和网络演算均有明确状态和进入条件。",
"id": "FOVEA-EGG-031",
"observation": "把来源、假设、机制映射、反例、代码路径和结论边界机器化后,前沿研究可以触发实现,也可以明确阻止不适用的“先进算法”进入生产。",
"overgeneralizationRisk": "条目数量和来源年份可能再次变成表面指标;若不持续更新反例和代码映射,注册表会退化为文献清单。",
"principleIDs": [
"FOVEA-LAW-001",
"FOVEA-LAW-009",
"FOVEA-LAW-010",
"FOVEA-LAW-013",
"FOVEA-LAW-014"
],
"status": "promoted",
"title": "数学理论必须登记采用、研究、候选或拒绝状态",
"transferBoundary": "适用于需要把外部理论转为工程决策的项目;注册表不能替代阅读论文、复现实验和实现级验证。",
"triggerProblem": "仅搜集前沿定理容易形成术语目录,却不说明假设是否匹配、为什么采用、何时拒绝或什么证据能推翻当前决定。"
},
{
"artifactPaths": [
"Examples/FoveaWorkbenchApp/FoveaWorkbench/App/WorkbenchPrefetchCoordinator.swift"
],
"evidencePaths": [
"Examples/FoveaWorkbenchApp/FoveaWorkbenchTests/FoveaWorkbenchTests.swift"
],
"evidenceTestIDs": [
"DEMO-PT-029",
"DEMO-PT-030"
],
"extractedAsset": "WorkbenchPrefetchCoordinator 使用 assetID+targetWidth+targetHeight+contentMode 作为完成身份,并用 task UUID 防止迟到 completion 删除替换任务。",
"id": "FOVEA-EGG-032",
"observation": "异步任务表的 key 只表达业务身份,不能区分同 key 的不同生命周期;完成回调还必须携带创建时版本。图片目标身份必须包含实际影响解码结果的宽高和 content mode。",
"overgeneralizationRisk": "增加版本戳不能替代业务 key 的完整性;若未来引入 scale、transform 或 quality,它们仍必须进入身份。",
"principleIDs": [
"FOVEA-LAW-001",
"FOVEA-LAW-004",
"FOVEA-LAW-005",
"FOVEA-LAW-009",
"FOVEA-LAW-013"
],
"status": "promoted",
"title": "预取任务身份必须同时版本化任务与完整目标几何",
"transferBoundary": "适用于 reset、替换或取消后仍可能收到迟到回调的内存任务表;跨进程任务还需要持久 generation 或租约。",
"triggerProblem": "reset 后同 key 新任务可被旧 completion 按 key 删除;只记录宽度还会把不同高度的 Decode/Render 目标误认为同一完成身份。"
},
{
"artifactPaths": [
"Examples/FoveaWorkbenchApp/FoveaWorkbench/Models/WorkbenchEvidenceBundle.swift",
"Examples/FoveaWorkbenchApp/FoveaWorkbench/App/WorkbenchEvidenceExport.swift"
],
"evidencePaths": [
"Examples/FoveaWorkbenchApp/FoveaWorkbenchTests/FoveaWorkbenchTests.swift"
],
"evidenceTestIDs": [
"DEMO-PT-031"
],
"extractedAsset": "Evidence Bundle schema 3 使用小时粒度时间、设备家族/系统大版本、包内顺序号和每次导出加盐的 generation token,并删除 locale、时区、精确型号、运行/性能 UUID 与精确起止时间。",
"id": "FOVEA-EGG-033",
"observation": "复现实验需要 source tree、配置、场景、持续时间与结果,不需要稳定主体标识或精确墙钟。每次导出重新加盐和包内顺序号可保留内部关系而消除跨包关联。",
"overgeneralizationRisk": "过度删除可能损害复现;应按具体诊断问题增加粗粒度、非唯一字段,而不是恢复稳定标识。",
"principleIDs": [
"FOVEA-LAW-001",
"FOVEA-LAW-007",
"FOVEA-LAW-009",
"FOVEA-LAW-010",
"FOVEA-LAW-013"
],
"status": "promoted",
"title": "可分享证据默认采用最小关联能力而非完整运行快照",
"transferBoundary": "适用于外发诊断与实验包;本机临时调试仍可在受控 UI 中使用会话内短期 correlation。",
"triggerProblem": "精确时区、locale、设备型号、持久 generation、运行 UUID 和精确时间组合后,可在工单、截图和多次导出之间关联同一设备或会话。"
},
{
"artifactPaths": [
"Examples/FoveaWorkbenchApp/FoveaWorkbench/Resources/PrivacyInfo.xcprivacy",
"scripts/check-privacy-manifests.py",
"scripts/image_metadata.py",
"scripts/check-sensitive-material.py",
"scripts/verify-ios-example.py"
],
"evidencePaths": [
"scripts/check-privacy-manifests.py",
"scripts/check-sensitive-material.py",
"scripts/verify-ios-example.py"
],
"evidenceTestIDs": [
"SEC-CASE-043",
"SEC-CASE-044",
"SEC-CASE-045"
],
"extractedAsset": "App 根 PrivacyInfo、源码反推清单门、JPEG/PNG/WebP 元数据剥离与扫描、Release 字符串/PlugIns/根清单检查组成发布隐私闭环。",
"id": "FOVEA-EGG-034",
"observation": "源码扫描、资源生成和最终产物是三个不同边界。只检查仓库文本或工程文件无法证明 App 根清单实际打包,也无法发现二进制中的隐藏测试入口或图片元数据。",
"overgeneralizationRisk": "元数据清空不证明图片主体匿名;可识别人脸、地标、屏幕内容和文件名仍需独立内容审查。",
"principleIDs": [
"FOVEA-LAW-001",
"FOVEA-LAW-005",
"FOVEA-LAW-007",
"FOVEA-LAW-009",
"FOVEA-LAW-013"
],
"status": "promoted",
"title": "发布隐私边界必须同时覆盖源码声明、资源内容与最终二进制",
"transferBoundary": "适用于包含可执行 App 和媒体资源的发布项目;不同平台的隐私清单格式和 Required Reason 类别需单独映射。",
"triggerProblem": "库 Privacy Manifest 不能覆盖 App 自身 UserDefaults/文件时间访问;图片可携带 EXIF/XMP/IPTC;DEBUG 测试路由若只靠运行参数保护仍会进入 Release 二进制。"
},
{
"artifactPaths": [
"Examples/FoveaWorkbenchApp/FoveaWorkbench/App/WorkbenchAppModel.swift",
"Sources/FoveaHTTP/StagingDirectoryLease.swift"
],
"evidencePaths": [
"Examples/FoveaWorkbenchApp/FoveaWorkbenchTests/FoveaWorkbenchTests.swift",
"Tests/FoveaTests/URLSessionTransportTests.swift"
],
"evidenceTestIDs": [
"DEMO-PT-034",
"RES-PT-020"
],
"extractedAsset": "Workbench 重建使用 cancel-and-drain;URLSession staging 维护锁改为 25ms 非阻塞轮询、任务取消检查和 5 秒默认上限。",
"id": "FOVEA-EGG-035",
"observation": "取消只是请求,不是资源已经释放的证明。替换资源前需等待拥有者完成 finally/invalidation;跨进程互斥必须把取消和超时写入等待协议。",
"overgeneralizationRisk": "顺序等待所有任务可能放大重建延迟;若任务本身不响应取消,还需要更高层 deadline 和强制隔离,不能无限延长 drain。",
"principleIDs": [
"FOVEA-LAW-001",
"FOVEA-LAW-004",
"FOVEA-LAW-005",
"FOVEA-LAW-009",
"FOVEA-LAW-013"
],
"status": "promoted",
"title": "资源切换必须取消并汇合,跨进程锁必须可取消且有时限",
"transferBoundary": "适用于任务拥有独立 runtime、连接或暂存目录的重建流程;共享长生命周期服务可能需要分阶段 drain 和 deadline。",
"triggerProblem": "仅发送取消后立即发布新管线,会让旧证据 runtime 继续占用连接或晚到回写;阻塞式文件锁在外部异常持锁时可使首次请求无限等待。"
},
{
"artifactPaths": [
"Benchmarks/ComparativeLab/Sources/ComparativeLabCore/ComparativeLabCore.swift",
"Benchmarks/ComparativeLab/experiment-plan.json",
"Benchmarks/ComparativeLab/dataset-selection.json",
"docs/research/comparator-lock.json"
],
"evidencePaths": [
"Benchmarks/ComparativeLab/Tests/ComparativeLabCoreTests/ComparativeLabCoreTests.swift",
"scripts/check-comparative-plan.py",
"scripts/verify-comparative-lab.py"
],
"evidenceTestIDs": [
"COMP-PT-001",