glamsterdam-compat-lab 0.3.0 → 0.3.2

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 (92) hide show
  1. package/README.md +20 -5
  2. package/ROADMAP.md +5 -0
  3. package/data/client-compat/clients.example.json +15 -0
  4. package/datasets/public-seed/README.md +30 -0
  5. package/datasets/public-seed/comparisons/bytecode-ens-registry-mainnet-runtime--default-vs-research.json +136 -0
  6. package/datasets/public-seed/comparisons/bytecode-multicall3-mainnet-runtime--default-vs-research.json +139 -0
  7. package/datasets/public-seed/comparisons/bytecode-storage-heavy--default-vs-research.json +168 -0
  8. package/datasets/public-seed/comparisons/bytecode-uniswap-v2-factory-mainnet-runtime--default-vs-research.json +168 -0
  9. package/datasets/public-seed/comparisons/bytecode-usdc-proxy-mainnet-runtime--default-vs-research.json +154 -0
  10. package/datasets/public-seed/comparisons/bytecode-weth9-mainnet-runtime--default-vs-research.json +136 -0
  11. package/datasets/public-seed/comparisons/traces-besu-debug-structlogs--default-vs-research.json +91 -0
  12. package/datasets/public-seed/comparisons/traces-besu-mainnet-tracoor-debug-structlogs--default-vs-research.json +140 -0
  13. package/datasets/public-seed/comparisons/traces-call-tracer-tree--default-vs-research.json +121 -0
  14. package/datasets/public-seed/comparisons/traces-drpc-call-tracer-real--default-vs-research.json +123 -0
  15. package/datasets/public-seed/comparisons/traces-erigon-action-trace--default-vs-research.json +121 -0
  16. package/datasets/public-seed/comparisons/traces-foundry-json-trace--default-vs-research.json +124 -0
  17. package/datasets/public-seed/comparisons/traces-geth-json-rpc-structlogs--default-vs-research.json +108 -0
  18. package/datasets/public-seed/comparisons/traces-hardhat-debug-trace--default-vs-research.json +108 -0
  19. package/datasets/public-seed/comparisons/traces-nethermind-debug-structlogs--default-vs-research.json +153 -0
  20. package/datasets/public-seed/comparisons/traces-nethermind-mainnet-tracoor-debug-structlogs--default-vs-research.json +140 -0
  21. package/datasets/public-seed/comparisons/traces-storage-heavy-trace--default-vs-research.json +155 -0
  22. package/datasets/public-seed/findings.csv +139 -0
  23. package/datasets/public-seed/manifest.json +757 -0
  24. package/datasets/public-seed/reports/bytecode-ens-registry-mainnet-runtime--default.json +126 -0
  25. package/datasets/public-seed/reports/bytecode-ens-registry-mainnet-runtime--research.json +126 -0
  26. package/datasets/public-seed/reports/bytecode-multicall3-mainnet-runtime--default.json +97 -0
  27. package/datasets/public-seed/reports/bytecode-multicall3-mainnet-runtime--research.json +124 -0
  28. package/datasets/public-seed/reports/bytecode-storage-heavy--default.json +172 -0
  29. package/datasets/public-seed/reports/bytecode-storage-heavy--research.json +172 -0
  30. package/datasets/public-seed/reports/bytecode-uniswap-v2-factory-mainnet-runtime--default.json +172 -0
  31. package/datasets/public-seed/reports/bytecode-uniswap-v2-factory-mainnet-runtime--research.json +172 -0
  32. package/datasets/public-seed/reports/bytecode-usdc-proxy-mainnet-runtime--default.json +127 -0
  33. package/datasets/public-seed/reports/bytecode-usdc-proxy-mainnet-runtime--research.json +150 -0
  34. package/datasets/public-seed/reports/bytecode-weth9-mainnet-runtime--default.json +127 -0
  35. package/datasets/public-seed/reports/bytecode-weth9-mainnet-runtime--research.json +127 -0
  36. package/datasets/public-seed/reports/indexers-balance-diff-indexer--default.json +63 -0
  37. package/datasets/public-seed/reports/indexers-explorer-replay-indexer--default.json +45 -0
  38. package/datasets/public-seed/reports/indexers-subgraph--default.json +123 -0
  39. package/datasets/public-seed/reports/traces-besu-debug-structlogs--default.json +54 -0
  40. package/datasets/public-seed/reports/traces-besu-debug-structlogs--research.json +54 -0
  41. package/datasets/public-seed/reports/traces-besu-mainnet-tracoor-debug-structlogs--default.json +131 -0
  42. package/datasets/public-seed/reports/traces-besu-mainnet-tracoor-debug-structlogs--research.json +131 -0
  43. package/datasets/public-seed/reports/traces-call-tracer-tree--default.json +99 -0
  44. package/datasets/public-seed/reports/traces-call-tracer-tree--research.json +99 -0
  45. package/datasets/public-seed/reports/traces-drpc-call-tracer-real--default.json +103 -0
  46. package/datasets/public-seed/reports/traces-drpc-call-tracer-real--research.json +103 -0
  47. package/datasets/public-seed/reports/traces-erigon-action-trace--default.json +99 -0
  48. package/datasets/public-seed/reports/traces-erigon-action-trace--research.json +99 -0
  49. package/datasets/public-seed/reports/traces-foundry-json-trace--default.json +76 -0
  50. package/datasets/public-seed/reports/traces-foundry-json-trace--research.json +104 -0
  51. package/datasets/public-seed/reports/traces-geth-json-rpc-structlogs--default.json +78 -0
  52. package/datasets/public-seed/reports/traces-geth-json-rpc-structlogs--research.json +78 -0
  53. package/datasets/public-seed/reports/traces-hardhat-debug-trace--default.json +78 -0
  54. package/datasets/public-seed/reports/traces-hardhat-debug-trace--research.json +78 -0
  55. package/datasets/public-seed/reports/traces-nethermind-debug-structlogs--default.json +100 -0
  56. package/datasets/public-seed/reports/traces-nethermind-debug-structlogs--research.json +100 -0
  57. package/datasets/public-seed/reports/traces-nethermind-mainnet-tracoor-debug-structlogs--default.json +131 -0
  58. package/datasets/public-seed/reports/traces-nethermind-mainnet-tracoor-debug-structlogs--research.json +131 -0
  59. package/datasets/public-seed/reports/traces-storage-heavy-trace--default.json +151 -0
  60. package/datasets/public-seed/reports/traces-storage-heavy-trace--research.json +151 -0
  61. package/datasets/public-seed/reports/validator-operator-config--default.json +154 -0
  62. package/datasets/public-seed/reports/validator-operator-config-builder-gap--default.json +91 -0
  63. package/datasets/public-seed/reports/validator-operator-config-complete--default.json +27 -0
  64. package/datasets/public-seed/reports.csv +41 -0
  65. package/datasets/public-seed/summary.csv +42 -0
  66. package/datasets/public-seed/summary.json +176 -0
  67. package/dist/fixtures/provenance.d.ts +143 -0
  68. package/dist/fixtures/provenance.js +81 -0
  69. package/dist/fixtures/provenance.js.map +1 -0
  70. package/dist/index.d.ts +2 -0
  71. package/dist/index.js +1 -0
  72. package/dist/index.js.map +1 -1
  73. package/dist/reports/reportTypes.d.ts +7 -7
  74. package/dist/reports/reportTypes.js +1 -1
  75. package/dist/scanners/validatorScanner.d.ts +1 -1
  76. package/dist/scanners/validatorScanner.js +4 -2
  77. package/dist/scanners/validatorScanner.js.map +1 -1
  78. package/docs/fixtures.md +33 -0
  79. package/docs/release.md +2 -2
  80. package/examples/baseline-comparison.md +76 -0
  81. package/fixtures/bytecode/ens-registry-mainnet-runtime.hex +1 -0
  82. package/fixtures/bytecode/multicall3-mainnet-runtime.hex +1 -0
  83. package/fixtures/bytecode/uniswap-v2-factory-mainnet-runtime.hex +1 -0
  84. package/fixtures/bytecode/usdc-proxy-mainnet-runtime.hex +1 -0
  85. package/fixtures/bytecode/weth9-mainnet-runtime.hex +1 -0
  86. package/fixtures/indexers/explorer-replay-indexer.json +64 -0
  87. package/fixtures/provenance.json +926 -0
  88. package/fixtures/traces/besu-mainnet-tracoor-debug-structlogs.json +4217 -0
  89. package/fixtures/traces/nethermind-mainnet-tracoor-debug-structlogs.json +5419 -0
  90. package/fixtures/validator/operator-config-builder-gap.yaml +22 -0
  91. package/fixtures/validator/operator-config-complete.yaml +28 -0
  92. package/package.json +4 -2
@@ -0,0 +1,757 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "name": "public-seed",
4
+ "lastUpdated": "2026-05-12",
5
+ "description": "Deterministic seed dataset generated from safe-to-publish fixture inputs and threshold-profile comparisons.",
6
+ "toolVersion": "0.3.2",
7
+ "sourceManifest": "fixtures/provenance.json",
8
+ "summary": "summary.json",
9
+ "csvExports": {
10
+ "reports": "reports.csv",
11
+ "findings": "findings.csv",
12
+ "summary": "summary.csv"
13
+ },
14
+ "thresholdProfiles": [
15
+ {
16
+ "name": "default",
17
+ "path": "data/detectors/thresholds.json"
18
+ },
19
+ {
20
+ "name": "research",
21
+ "path": "data/detectors/thresholds.research.json"
22
+ }
23
+ ],
24
+ "reports": [
25
+ {
26
+ "sourceFixture": "fixtures/bytecode/ens-registry-mainnet-runtime.hex",
27
+ "fixtureKind": "bytecode",
28
+ "thresholdProfile": "default",
29
+ "report": "reports/bytecode-ens-registry-mainnet-runtime--default.json",
30
+ "risk": "medium",
31
+ "findingCount": 4,
32
+ "findingIds": [
33
+ "bytecode.state-account-opcode-exposure",
34
+ "bytecode.storage-heavy-pattern",
35
+ "bytecode.log-opcodes-present",
36
+ "bytecode.manual-review-required"
37
+ ]
38
+ },
39
+ {
40
+ "sourceFixture": "fixtures/bytecode/ens-registry-mainnet-runtime.hex",
41
+ "fixtureKind": "bytecode",
42
+ "thresholdProfile": "research",
43
+ "report": "reports/bytecode-ens-registry-mainnet-runtime--research.json",
44
+ "risk": "medium",
45
+ "findingCount": 4,
46
+ "findingIds": [
47
+ "bytecode.state-account-opcode-exposure",
48
+ "bytecode.storage-heavy-pattern",
49
+ "bytecode.log-opcodes-present",
50
+ "bytecode.manual-review-required"
51
+ ]
52
+ },
53
+ {
54
+ "sourceFixture": "fixtures/bytecode/multicall3-mainnet-runtime.hex",
55
+ "fixtureKind": "bytecode",
56
+ "thresholdProfile": "default",
57
+ "report": "reports/bytecode-multicall3-mainnet-runtime--default.json",
58
+ "risk": "low",
59
+ "findingCount": 3,
60
+ "findingIds": [
61
+ "bytecode.calldata-copy-exposure",
62
+ "bytecode.log-opcodes-present",
63
+ "bytecode.manual-review-required"
64
+ ]
65
+ },
66
+ {
67
+ "sourceFixture": "fixtures/bytecode/multicall3-mainnet-runtime.hex",
68
+ "fixtureKind": "bytecode",
69
+ "thresholdProfile": "research",
70
+ "report": "reports/bytecode-multicall3-mainnet-runtime--research.json",
71
+ "risk": "low",
72
+ "findingCount": 4,
73
+ "findingIds": [
74
+ "bytecode.state-account-opcode-presence",
75
+ "bytecode.calldata-copy-exposure",
76
+ "bytecode.log-opcodes-present",
77
+ "bytecode.manual-review-required"
78
+ ]
79
+ },
80
+ {
81
+ "sourceFixture": "fixtures/bytecode/storage-heavy.hex",
82
+ "fixtureKind": "bytecode",
83
+ "thresholdProfile": "default",
84
+ "report": "reports/bytecode-storage-heavy--default.json",
85
+ "risk": "medium",
86
+ "findingCount": 6,
87
+ "findingIds": [
88
+ "bytecode.state-account-opcode-exposure",
89
+ "bytecode.calldata-copy-exposure",
90
+ "bytecode.contract-creation-opcodes",
91
+ "bytecode.storage-heavy-pattern",
92
+ "bytecode.log-opcodes-present",
93
+ "bytecode.manual-review-required"
94
+ ]
95
+ },
96
+ {
97
+ "sourceFixture": "fixtures/bytecode/storage-heavy.hex",
98
+ "fixtureKind": "bytecode",
99
+ "thresholdProfile": "research",
100
+ "report": "reports/bytecode-storage-heavy--research.json",
101
+ "risk": "medium",
102
+ "findingCount": 6,
103
+ "findingIds": [
104
+ "bytecode.state-account-opcode-exposure",
105
+ "bytecode.calldata-copy-exposure",
106
+ "bytecode.contract-creation-opcodes",
107
+ "bytecode.storage-heavy-pattern",
108
+ "bytecode.log-opcodes-present",
109
+ "bytecode.manual-review-required"
110
+ ]
111
+ },
112
+ {
113
+ "sourceFixture": "fixtures/bytecode/uniswap-v2-factory-mainnet-runtime.hex",
114
+ "fixtureKind": "bytecode",
115
+ "thresholdProfile": "default",
116
+ "report": "reports/bytecode-uniswap-v2-factory-mainnet-runtime--default.json",
117
+ "risk": "medium",
118
+ "findingCount": 6,
119
+ "findingIds": [
120
+ "bytecode.state-account-opcode-exposure",
121
+ "bytecode.calldata-copy-exposure",
122
+ "bytecode.contract-creation-opcodes",
123
+ "bytecode.storage-heavy-pattern",
124
+ "bytecode.log-opcodes-present",
125
+ "bytecode.manual-review-required"
126
+ ]
127
+ },
128
+ {
129
+ "sourceFixture": "fixtures/bytecode/uniswap-v2-factory-mainnet-runtime.hex",
130
+ "fixtureKind": "bytecode",
131
+ "thresholdProfile": "research",
132
+ "report": "reports/bytecode-uniswap-v2-factory-mainnet-runtime--research.json",
133
+ "risk": "medium",
134
+ "findingCount": 6,
135
+ "findingIds": [
136
+ "bytecode.state-account-opcode-exposure",
137
+ "bytecode.calldata-copy-exposure",
138
+ "bytecode.contract-creation-opcodes",
139
+ "bytecode.storage-heavy-pattern",
140
+ "bytecode.log-opcodes-present",
141
+ "bytecode.manual-review-required"
142
+ ]
143
+ },
144
+ {
145
+ "sourceFixture": "fixtures/bytecode/usdc-proxy-mainnet-runtime.hex",
146
+ "fixtureKind": "bytecode",
147
+ "thresholdProfile": "default",
148
+ "report": "reports/bytecode-usdc-proxy-mainnet-runtime--default.json",
149
+ "risk": "medium",
150
+ "findingCount": 4,
151
+ "findingIds": [
152
+ "bytecode.state-account-opcode-exposure",
153
+ "bytecode.calldata-copy-exposure",
154
+ "bytecode.log-opcodes-present",
155
+ "bytecode.manual-review-required"
156
+ ]
157
+ },
158
+ {
159
+ "sourceFixture": "fixtures/bytecode/usdc-proxy-mainnet-runtime.hex",
160
+ "fixtureKind": "bytecode",
161
+ "thresholdProfile": "research",
162
+ "report": "reports/bytecode-usdc-proxy-mainnet-runtime--research.json",
163
+ "risk": "medium",
164
+ "findingCount": 5,
165
+ "findingIds": [
166
+ "bytecode.state-account-opcode-exposure",
167
+ "bytecode.calldata-copy-exposure",
168
+ "bytecode.storage-heavy-pattern",
169
+ "bytecode.log-opcodes-present",
170
+ "bytecode.manual-review-required"
171
+ ]
172
+ },
173
+ {
174
+ "sourceFixture": "fixtures/bytecode/weth9-mainnet-runtime.hex",
175
+ "fixtureKind": "bytecode",
176
+ "thresholdProfile": "default",
177
+ "report": "reports/bytecode-weth9-mainnet-runtime--default.json",
178
+ "risk": "medium",
179
+ "findingCount": 4,
180
+ "findingIds": [
181
+ "bytecode.state-account-opcode-exposure",
182
+ "bytecode.storage-heavy-pattern",
183
+ "bytecode.log-opcodes-present",
184
+ "bytecode.manual-review-required"
185
+ ]
186
+ },
187
+ {
188
+ "sourceFixture": "fixtures/bytecode/weth9-mainnet-runtime.hex",
189
+ "fixtureKind": "bytecode",
190
+ "thresholdProfile": "research",
191
+ "report": "reports/bytecode-weth9-mainnet-runtime--research.json",
192
+ "risk": "medium",
193
+ "findingCount": 4,
194
+ "findingIds": [
195
+ "bytecode.state-account-opcode-exposure",
196
+ "bytecode.storage-heavy-pattern",
197
+ "bytecode.log-opcodes-present",
198
+ "bytecode.manual-review-required"
199
+ ]
200
+ },
201
+ {
202
+ "sourceFixture": "fixtures/indexers/balance-diff-indexer.json",
203
+ "fixtureKind": "indexer",
204
+ "thresholdProfile": "default",
205
+ "report": "reports/indexers-balance-diff-indexer--default.json",
206
+ "risk": "medium",
207
+ "findingCount": 2,
208
+ "findingIds": [
209
+ "indexer.balance-diff-native-transfer-assumption",
210
+ "indexer.missing-bal-readiness-metadata"
211
+ ]
212
+ },
213
+ {
214
+ "sourceFixture": "fixtures/indexers/explorer-replay-indexer.json",
215
+ "fixtureKind": "indexer",
216
+ "thresholdProfile": "default",
217
+ "report": "reports/indexers-explorer-replay-indexer--default.json",
218
+ "risk": "medium",
219
+ "findingCount": 1,
220
+ "findingIds": [
221
+ "indexer.balance-diff-native-transfer-assumption"
222
+ ]
223
+ },
224
+ {
225
+ "sourceFixture": "fixtures/indexers/subgraph.yaml",
226
+ "fixtureKind": "indexer",
227
+ "thresholdProfile": "default",
228
+ "report": "reports/indexers-subgraph--default.json",
229
+ "risk": "medium",
230
+ "findingCount": 5,
231
+ "findingIds": [
232
+ "indexer.event-only-assumption",
233
+ "indexer.native-eth-transfer-review-missing",
234
+ "indexer.missing-bal-readiness-metadata",
235
+ "indexer.missing-fork-compatibility-metadata",
236
+ "indexer.missing-replay-plan"
237
+ ]
238
+ },
239
+ {
240
+ "sourceFixture": "fixtures/traces/besu-debug-structlogs.json",
241
+ "fixtureKind": "trace",
242
+ "thresholdProfile": "default",
243
+ "report": "reports/traces-besu-debug-structlogs--default.json",
244
+ "risk": "low",
245
+ "findingCount": 1,
246
+ "findingIds": [
247
+ "trace.logs-calls-visible"
248
+ ]
249
+ },
250
+ {
251
+ "sourceFixture": "fixtures/traces/besu-debug-structlogs.json",
252
+ "fixtureKind": "trace",
253
+ "thresholdProfile": "research",
254
+ "report": "reports/traces-besu-debug-structlogs--research.json",
255
+ "risk": "low",
256
+ "findingCount": 1,
257
+ "findingIds": [
258
+ "trace.logs-calls-visible"
259
+ ]
260
+ },
261
+ {
262
+ "sourceFixture": "fixtures/traces/besu-mainnet-tracoor-debug-structlogs.json",
263
+ "fixtureKind": "trace",
264
+ "thresholdProfile": "default",
265
+ "report": "reports/traces-besu-mainnet-tracoor-debug-structlogs--default.json",
266
+ "risk": "medium",
267
+ "findingCount": 4,
268
+ "findingIds": [
269
+ "trace.state-heavy-execution-medium",
270
+ "trace.calldata-heavy-execution",
271
+ "trace.logs-calls-visible",
272
+ "trace.partial-evidence"
273
+ ]
274
+ },
275
+ {
276
+ "sourceFixture": "fixtures/traces/besu-mainnet-tracoor-debug-structlogs.json",
277
+ "fixtureKind": "trace",
278
+ "thresholdProfile": "research",
279
+ "report": "reports/traces-besu-mainnet-tracoor-debug-structlogs--research.json",
280
+ "risk": "medium",
281
+ "findingCount": 4,
282
+ "findingIds": [
283
+ "trace.state-heavy-execution-medium",
284
+ "trace.calldata-heavy-execution",
285
+ "trace.logs-calls-visible",
286
+ "trace.partial-evidence"
287
+ ]
288
+ },
289
+ {
290
+ "sourceFixture": "fixtures/traces/call-tracer-tree.json",
291
+ "fixtureKind": "trace",
292
+ "thresholdProfile": "default",
293
+ "report": "reports/traces-call-tracer-tree--default.json",
294
+ "risk": "medium",
295
+ "findingCount": 3,
296
+ "findingIds": [
297
+ "trace.contract-creation-executed",
298
+ "trace.logs-calls-visible",
299
+ "trace.partial-evidence"
300
+ ]
301
+ },
302
+ {
303
+ "sourceFixture": "fixtures/traces/call-tracer-tree.json",
304
+ "fixtureKind": "trace",
305
+ "thresholdProfile": "research",
306
+ "report": "reports/traces-call-tracer-tree--research.json",
307
+ "risk": "medium",
308
+ "findingCount": 3,
309
+ "findingIds": [
310
+ "trace.contract-creation-executed",
311
+ "trace.logs-calls-visible",
312
+ "trace.partial-evidence"
313
+ ]
314
+ },
315
+ {
316
+ "sourceFixture": "fixtures/traces/drpc-call-tracer-real.json",
317
+ "fixtureKind": "trace",
318
+ "thresholdProfile": "default",
319
+ "report": "reports/traces-drpc-call-tracer-real--default.json",
320
+ "risk": "medium",
321
+ "findingCount": 3,
322
+ "findingIds": [
323
+ "trace.calldata-heavy-execution",
324
+ "trace.logs-calls-visible",
325
+ "trace.partial-evidence"
326
+ ]
327
+ },
328
+ {
329
+ "sourceFixture": "fixtures/traces/drpc-call-tracer-real.json",
330
+ "fixtureKind": "trace",
331
+ "thresholdProfile": "research",
332
+ "report": "reports/traces-drpc-call-tracer-real--research.json",
333
+ "risk": "medium",
334
+ "findingCount": 3,
335
+ "findingIds": [
336
+ "trace.calldata-heavy-execution",
337
+ "trace.logs-calls-visible",
338
+ "trace.partial-evidence"
339
+ ]
340
+ },
341
+ {
342
+ "sourceFixture": "fixtures/traces/erigon-action-trace.json",
343
+ "fixtureKind": "trace",
344
+ "thresholdProfile": "default",
345
+ "report": "reports/traces-erigon-action-trace--default.json",
346
+ "risk": "medium",
347
+ "findingCount": 3,
348
+ "findingIds": [
349
+ "trace.contract-creation-executed",
350
+ "trace.logs-calls-visible",
351
+ "trace.partial-evidence"
352
+ ]
353
+ },
354
+ {
355
+ "sourceFixture": "fixtures/traces/erigon-action-trace.json",
356
+ "fixtureKind": "trace",
357
+ "thresholdProfile": "research",
358
+ "report": "reports/traces-erigon-action-trace--research.json",
359
+ "risk": "medium",
360
+ "findingCount": 3,
361
+ "findingIds": [
362
+ "trace.contract-creation-executed",
363
+ "trace.logs-calls-visible",
364
+ "trace.partial-evidence"
365
+ ]
366
+ },
367
+ {
368
+ "sourceFixture": "fixtures/traces/foundry-json-trace.json",
369
+ "fixtureKind": "trace",
370
+ "thresholdProfile": "default",
371
+ "report": "reports/traces-foundry-json-trace--default.json",
372
+ "risk": "medium",
373
+ "findingCount": 2,
374
+ "findingIds": [
375
+ "trace.contract-creation-executed",
376
+ "trace.logs-calls-visible"
377
+ ]
378
+ },
379
+ {
380
+ "sourceFixture": "fixtures/traces/foundry-json-trace.json",
381
+ "fixtureKind": "trace",
382
+ "thresholdProfile": "research",
383
+ "report": "reports/traces-foundry-json-trace--research.json",
384
+ "risk": "medium",
385
+ "findingCount": 3,
386
+ "findingIds": [
387
+ "trace.state-heavy-execution-medium",
388
+ "trace.contract-creation-executed",
389
+ "trace.logs-calls-visible"
390
+ ]
391
+ },
392
+ {
393
+ "sourceFixture": "fixtures/traces/geth-json-rpc-structlogs.json",
394
+ "fixtureKind": "trace",
395
+ "thresholdProfile": "default",
396
+ "report": "reports/traces-geth-json-rpc-structlogs--default.json",
397
+ "risk": "low",
398
+ "findingCount": 2,
399
+ "findingIds": [
400
+ "trace.calldata-heavy-execution",
401
+ "trace.logs-calls-visible"
402
+ ]
403
+ },
404
+ {
405
+ "sourceFixture": "fixtures/traces/geth-json-rpc-structlogs.json",
406
+ "fixtureKind": "trace",
407
+ "thresholdProfile": "research",
408
+ "report": "reports/traces-geth-json-rpc-structlogs--research.json",
409
+ "risk": "low",
410
+ "findingCount": 2,
411
+ "findingIds": [
412
+ "trace.calldata-heavy-execution",
413
+ "trace.logs-calls-visible"
414
+ ]
415
+ },
416
+ {
417
+ "sourceFixture": "fixtures/traces/hardhat-debug-trace.json",
418
+ "fixtureKind": "trace",
419
+ "thresholdProfile": "default",
420
+ "report": "reports/traces-hardhat-debug-trace--default.json",
421
+ "risk": "medium",
422
+ "findingCount": 2,
423
+ "findingIds": [
424
+ "trace.calldata-heavy-execution",
425
+ "trace.logs-calls-visible"
426
+ ]
427
+ },
428
+ {
429
+ "sourceFixture": "fixtures/traces/hardhat-debug-trace.json",
430
+ "fixtureKind": "trace",
431
+ "thresholdProfile": "research",
432
+ "report": "reports/traces-hardhat-debug-trace--research.json",
433
+ "risk": "medium",
434
+ "findingCount": 2,
435
+ "findingIds": [
436
+ "trace.calldata-heavy-execution",
437
+ "trace.logs-calls-visible"
438
+ ]
439
+ },
440
+ {
441
+ "sourceFixture": "fixtures/traces/nethermind-debug-structlogs.json",
442
+ "fixtureKind": "trace",
443
+ "thresholdProfile": "default",
444
+ "report": "reports/traces-nethermind-debug-structlogs--default.json",
445
+ "risk": "medium",
446
+ "findingCount": 3,
447
+ "findingIds": [
448
+ "trace.calldata-heavy-execution",
449
+ "trace.contract-creation-executed",
450
+ "trace.logs-calls-visible"
451
+ ]
452
+ },
453
+ {
454
+ "sourceFixture": "fixtures/traces/nethermind-debug-structlogs.json",
455
+ "fixtureKind": "trace",
456
+ "thresholdProfile": "research",
457
+ "report": "reports/traces-nethermind-debug-structlogs--research.json",
458
+ "risk": "medium",
459
+ "findingCount": 3,
460
+ "findingIds": [
461
+ "trace.calldata-heavy-execution",
462
+ "trace.contract-creation-executed",
463
+ "trace.logs-calls-visible"
464
+ ]
465
+ },
466
+ {
467
+ "sourceFixture": "fixtures/traces/nethermind-mainnet-tracoor-debug-structlogs.json",
468
+ "fixtureKind": "trace",
469
+ "thresholdProfile": "default",
470
+ "report": "reports/traces-nethermind-mainnet-tracoor-debug-structlogs--default.json",
471
+ "risk": "medium",
472
+ "findingCount": 4,
473
+ "findingIds": [
474
+ "trace.state-heavy-execution-medium",
475
+ "trace.calldata-heavy-execution",
476
+ "trace.logs-calls-visible",
477
+ "trace.partial-evidence"
478
+ ]
479
+ },
480
+ {
481
+ "sourceFixture": "fixtures/traces/nethermind-mainnet-tracoor-debug-structlogs.json",
482
+ "fixtureKind": "trace",
483
+ "thresholdProfile": "research",
484
+ "report": "reports/traces-nethermind-mainnet-tracoor-debug-structlogs--research.json",
485
+ "risk": "medium",
486
+ "findingCount": 4,
487
+ "findingIds": [
488
+ "trace.state-heavy-execution-medium",
489
+ "trace.calldata-heavy-execution",
490
+ "trace.logs-calls-visible",
491
+ "trace.partial-evidence"
492
+ ]
493
+ },
494
+ {
495
+ "sourceFixture": "fixtures/traces/storage-heavy-trace.json",
496
+ "fixtureKind": "trace",
497
+ "thresholdProfile": "default",
498
+ "report": "reports/traces-storage-heavy-trace--default.json",
499
+ "risk": "medium",
500
+ "findingCount": 5,
501
+ "findingIds": [
502
+ "trace.state-heavy-execution-medium",
503
+ "trace.calldata-heavy-execution",
504
+ "trace.contract-creation-executed",
505
+ "trace.logs-calls-visible",
506
+ "trace.partial-evidence"
507
+ ]
508
+ },
509
+ {
510
+ "sourceFixture": "fixtures/traces/storage-heavy-trace.json",
511
+ "fixtureKind": "trace",
512
+ "thresholdProfile": "research",
513
+ "report": "reports/traces-storage-heavy-trace--research.json",
514
+ "risk": "medium",
515
+ "findingCount": 5,
516
+ "findingIds": [
517
+ "trace.state-heavy-execution-medium",
518
+ "trace.calldata-heavy-execution",
519
+ "trace.contract-creation-executed",
520
+ "trace.logs-calls-visible",
521
+ "trace.partial-evidence"
522
+ ]
523
+ },
524
+ {
525
+ "sourceFixture": "fixtures/validator/operator-config-builder-gap.yaml",
526
+ "fixtureKind": "validator",
527
+ "thresholdProfile": "default",
528
+ "report": "reports/validator-operator-config-builder-gap--default.json",
529
+ "risk": "medium",
530
+ "findingCount": 3,
531
+ "findingIds": [
532
+ "validator.builder-enabled-without-endpoint",
533
+ "validator.missing-monitoring-endpoints",
534
+ "validator.missing-testnet-participation"
535
+ ]
536
+ },
537
+ {
538
+ "sourceFixture": "fixtures/validator/operator-config-complete.yaml",
539
+ "fixtureKind": "validator",
540
+ "thresholdProfile": "default",
541
+ "report": "reports/validator-operator-config-complete--default.json",
542
+ "risk": "low",
543
+ "findingCount": 0,
544
+ "findingIds": []
545
+ },
546
+ {
547
+ "sourceFixture": "fixtures/validator/operator-config.yaml",
548
+ "fixtureKind": "validator",
549
+ "thresholdProfile": "default",
550
+ "report": "reports/validator-operator-config--default.json",
551
+ "risk": "medium",
552
+ "findingCount": 6,
553
+ "findingIds": [
554
+ "validator.unknown-execution-client-compatibility",
555
+ "validator.unknown-consensus-client-compatibility",
556
+ "validator.missing-validator-client-version",
557
+ "validator.builder-enabled-without-endpoint",
558
+ "validator.missing-monitoring-endpoints",
559
+ "validator.missing-testnet-participation"
560
+ ]
561
+ }
562
+ ],
563
+ "comparisons": [
564
+ {
565
+ "sourceFixture": "fixtures/bytecode/ens-registry-mainnet-runtime.hex",
566
+ "baselineReport": "reports/bytecode-ens-registry-mainnet-runtime--default.json",
567
+ "candidateReport": "reports/bytecode-ens-registry-mainnet-runtime--research.json",
568
+ "comparison": "comparisons/bytecode-ens-registry-mainnet-runtime--default-vs-research.json",
569
+ "riskChange": "medium->medium (unchanged)",
570
+ "addedCount": 0,
571
+ "removedCount": 0,
572
+ "changedCount": 0,
573
+ "unchangedCount": 4
574
+ },
575
+ {
576
+ "sourceFixture": "fixtures/bytecode/multicall3-mainnet-runtime.hex",
577
+ "baselineReport": "reports/bytecode-multicall3-mainnet-runtime--default.json",
578
+ "candidateReport": "reports/bytecode-multicall3-mainnet-runtime--research.json",
579
+ "comparison": "comparisons/bytecode-multicall3-mainnet-runtime--default-vs-research.json",
580
+ "riskChange": "low->low (unchanged)",
581
+ "addedCount": 1,
582
+ "removedCount": 0,
583
+ "changedCount": 0,
584
+ "unchangedCount": 3
585
+ },
586
+ {
587
+ "sourceFixture": "fixtures/bytecode/storage-heavy.hex",
588
+ "baselineReport": "reports/bytecode-storage-heavy--default.json",
589
+ "candidateReport": "reports/bytecode-storage-heavy--research.json",
590
+ "comparison": "comparisons/bytecode-storage-heavy--default-vs-research.json",
591
+ "riskChange": "medium->medium (unchanged)",
592
+ "addedCount": 0,
593
+ "removedCount": 0,
594
+ "changedCount": 0,
595
+ "unchangedCount": 6
596
+ },
597
+ {
598
+ "sourceFixture": "fixtures/bytecode/uniswap-v2-factory-mainnet-runtime.hex",
599
+ "baselineReport": "reports/bytecode-uniswap-v2-factory-mainnet-runtime--default.json",
600
+ "candidateReport": "reports/bytecode-uniswap-v2-factory-mainnet-runtime--research.json",
601
+ "comparison": "comparisons/bytecode-uniswap-v2-factory-mainnet-runtime--default-vs-research.json",
602
+ "riskChange": "medium->medium (unchanged)",
603
+ "addedCount": 0,
604
+ "removedCount": 0,
605
+ "changedCount": 0,
606
+ "unchangedCount": 6
607
+ },
608
+ {
609
+ "sourceFixture": "fixtures/bytecode/usdc-proxy-mainnet-runtime.hex",
610
+ "baselineReport": "reports/bytecode-usdc-proxy-mainnet-runtime--default.json",
611
+ "candidateReport": "reports/bytecode-usdc-proxy-mainnet-runtime--research.json",
612
+ "comparison": "comparisons/bytecode-usdc-proxy-mainnet-runtime--default-vs-research.json",
613
+ "riskChange": "medium->medium (unchanged)",
614
+ "addedCount": 1,
615
+ "removedCount": 0,
616
+ "changedCount": 0,
617
+ "unchangedCount": 4
618
+ },
619
+ {
620
+ "sourceFixture": "fixtures/bytecode/weth9-mainnet-runtime.hex",
621
+ "baselineReport": "reports/bytecode-weth9-mainnet-runtime--default.json",
622
+ "candidateReport": "reports/bytecode-weth9-mainnet-runtime--research.json",
623
+ "comparison": "comparisons/bytecode-weth9-mainnet-runtime--default-vs-research.json",
624
+ "riskChange": "medium->medium (unchanged)",
625
+ "addedCount": 0,
626
+ "removedCount": 0,
627
+ "changedCount": 0,
628
+ "unchangedCount": 4
629
+ },
630
+ {
631
+ "sourceFixture": "fixtures/traces/besu-debug-structlogs.json",
632
+ "baselineReport": "reports/traces-besu-debug-structlogs--default.json",
633
+ "candidateReport": "reports/traces-besu-debug-structlogs--research.json",
634
+ "comparison": "comparisons/traces-besu-debug-structlogs--default-vs-research.json",
635
+ "riskChange": "low->low (unchanged)",
636
+ "addedCount": 0,
637
+ "removedCount": 0,
638
+ "changedCount": 0,
639
+ "unchangedCount": 1
640
+ },
641
+ {
642
+ "sourceFixture": "fixtures/traces/besu-mainnet-tracoor-debug-structlogs.json",
643
+ "baselineReport": "reports/traces-besu-mainnet-tracoor-debug-structlogs--default.json",
644
+ "candidateReport": "reports/traces-besu-mainnet-tracoor-debug-structlogs--research.json",
645
+ "comparison": "comparisons/traces-besu-mainnet-tracoor-debug-structlogs--default-vs-research.json",
646
+ "riskChange": "medium->medium (unchanged)",
647
+ "addedCount": 0,
648
+ "removedCount": 0,
649
+ "changedCount": 0,
650
+ "unchangedCount": 4
651
+ },
652
+ {
653
+ "sourceFixture": "fixtures/traces/call-tracer-tree.json",
654
+ "baselineReport": "reports/traces-call-tracer-tree--default.json",
655
+ "candidateReport": "reports/traces-call-tracer-tree--research.json",
656
+ "comparison": "comparisons/traces-call-tracer-tree--default-vs-research.json",
657
+ "riskChange": "medium->medium (unchanged)",
658
+ "addedCount": 0,
659
+ "removedCount": 0,
660
+ "changedCount": 0,
661
+ "unchangedCount": 3
662
+ },
663
+ {
664
+ "sourceFixture": "fixtures/traces/drpc-call-tracer-real.json",
665
+ "baselineReport": "reports/traces-drpc-call-tracer-real--default.json",
666
+ "candidateReport": "reports/traces-drpc-call-tracer-real--research.json",
667
+ "comparison": "comparisons/traces-drpc-call-tracer-real--default-vs-research.json",
668
+ "riskChange": "medium->medium (unchanged)",
669
+ "addedCount": 0,
670
+ "removedCount": 0,
671
+ "changedCount": 0,
672
+ "unchangedCount": 3
673
+ },
674
+ {
675
+ "sourceFixture": "fixtures/traces/erigon-action-trace.json",
676
+ "baselineReport": "reports/traces-erigon-action-trace--default.json",
677
+ "candidateReport": "reports/traces-erigon-action-trace--research.json",
678
+ "comparison": "comparisons/traces-erigon-action-trace--default-vs-research.json",
679
+ "riskChange": "medium->medium (unchanged)",
680
+ "addedCount": 0,
681
+ "removedCount": 0,
682
+ "changedCount": 0,
683
+ "unchangedCount": 3
684
+ },
685
+ {
686
+ "sourceFixture": "fixtures/traces/foundry-json-trace.json",
687
+ "baselineReport": "reports/traces-foundry-json-trace--default.json",
688
+ "candidateReport": "reports/traces-foundry-json-trace--research.json",
689
+ "comparison": "comparisons/traces-foundry-json-trace--default-vs-research.json",
690
+ "riskChange": "medium->medium (unchanged)",
691
+ "addedCount": 1,
692
+ "removedCount": 0,
693
+ "changedCount": 0,
694
+ "unchangedCount": 2
695
+ },
696
+ {
697
+ "sourceFixture": "fixtures/traces/geth-json-rpc-structlogs.json",
698
+ "baselineReport": "reports/traces-geth-json-rpc-structlogs--default.json",
699
+ "candidateReport": "reports/traces-geth-json-rpc-structlogs--research.json",
700
+ "comparison": "comparisons/traces-geth-json-rpc-structlogs--default-vs-research.json",
701
+ "riskChange": "low->low (unchanged)",
702
+ "addedCount": 0,
703
+ "removedCount": 0,
704
+ "changedCount": 0,
705
+ "unchangedCount": 2
706
+ },
707
+ {
708
+ "sourceFixture": "fixtures/traces/hardhat-debug-trace.json",
709
+ "baselineReport": "reports/traces-hardhat-debug-trace--default.json",
710
+ "candidateReport": "reports/traces-hardhat-debug-trace--research.json",
711
+ "comparison": "comparisons/traces-hardhat-debug-trace--default-vs-research.json",
712
+ "riskChange": "medium->medium (unchanged)",
713
+ "addedCount": 0,
714
+ "removedCount": 0,
715
+ "changedCount": 0,
716
+ "unchangedCount": 2
717
+ },
718
+ {
719
+ "sourceFixture": "fixtures/traces/nethermind-debug-structlogs.json",
720
+ "baselineReport": "reports/traces-nethermind-debug-structlogs--default.json",
721
+ "candidateReport": "reports/traces-nethermind-debug-structlogs--research.json",
722
+ "comparison": "comparisons/traces-nethermind-debug-structlogs--default-vs-research.json",
723
+ "riskChange": "medium->medium (unchanged)",
724
+ "addedCount": 0,
725
+ "removedCount": 0,
726
+ "changedCount": 1,
727
+ "unchangedCount": 2
728
+ },
729
+ {
730
+ "sourceFixture": "fixtures/traces/nethermind-mainnet-tracoor-debug-structlogs.json",
731
+ "baselineReport": "reports/traces-nethermind-mainnet-tracoor-debug-structlogs--default.json",
732
+ "candidateReport": "reports/traces-nethermind-mainnet-tracoor-debug-structlogs--research.json",
733
+ "comparison": "comparisons/traces-nethermind-mainnet-tracoor-debug-structlogs--default-vs-research.json",
734
+ "riskChange": "medium->medium (unchanged)",
735
+ "addedCount": 0,
736
+ "removedCount": 0,
737
+ "changedCount": 0,
738
+ "unchangedCount": 4
739
+ },
740
+ {
741
+ "sourceFixture": "fixtures/traces/storage-heavy-trace.json",
742
+ "baselineReport": "reports/traces-storage-heavy-trace--default.json",
743
+ "candidateReport": "reports/traces-storage-heavy-trace--research.json",
744
+ "comparison": "comparisons/traces-storage-heavy-trace--default-vs-research.json",
745
+ "riskChange": "medium->medium (unchanged)",
746
+ "addedCount": 0,
747
+ "removedCount": 0,
748
+ "changedCount": 0,
749
+ "unchangedCount": 5
750
+ }
751
+ ],
752
+ "limitations": [
753
+ "This seed dataset is fixture-based and intentionally small; it is not an aggregate measurement of public-chain Glamsterdam readiness.",
754
+ "Synthetic fixtures provide parser and detector coverage but do not prove real client behavior.",
755
+ "Threshold-profile comparisons are structural report differences, not final fork gas deltas."
756
+ ]
757
+ }