@crawlcheck/sdk 1.1.0 → 1.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "kind": "crawlcheck-guard-acceptance",
3
3
  "v": 1,
4
- "suite_version": "1.0.0",
5
- "built_at": "2026-10-10T16:05:00.994Z",
4
+ "suite_version": "1.2.0",
5
+ "built_at": "2026-10-10T17:53:14.660Z",
6
6
  "now": "2026-10-10T16:00:00.000Z",
7
7
  "nonce": "ccguard-acceptance-0001",
8
8
  "spec": "https://crawlcheck.io/spec/guard",
@@ -17,14 +17,22 @@
17
17
  "directory": {
18
18
  "keys": [
19
19
  {
20
- "kid": "xrog-5dLQHQuXmIsVCTFRFfPSzLVonFLRoWdifn1AmE",
20
+ "kid": "erziRf8en6nlChFs1zqtfOHoOyD2GyiXW98t3SYpLuk",
21
+ "crawlcheck_purpose": "documents",
21
22
  "kty": "OKP",
22
23
  "crv": "Ed25519",
23
- "x": "_EeVevPcJyuRWRCjFyG3-wRgmEdZmrn9tlBTvD31u8Q"
24
+ "x": "wS76C0bWq0ejgwsAlHq0imuG2HoW15ZeLhw9icbKbiA"
25
+ },
26
+ {
27
+ "kid": "r0X_XXpsP2-1P00GEj1tOmMIoTJ_w8H30oO6xo1NsRg",
28
+ "crawlcheck_purpose": "decisions",
29
+ "kty": "OKP",
30
+ "crv": "Ed25519",
31
+ "x": "DNDLnEKFsf8xmexG6JmEdHiq-O5Mn5Hn8p5wt3UvdiA"
24
32
  }
25
33
  ]
26
34
  },
27
- "how": "For each case: serve directory at /.well-known/http-message-signatures-directory and answer POST /api/v1/preflight with crawlcheck (status + body or text; unreachable = refuse the connection; by_domain = the receipt for the domain asked). Call the guard with request (pin nonce and now). A fetch case also serves sites (url -> status, location, body) and records each URL the guard requested and which domain got the CrawlCheck-Receipt header. expect.proceed must match; for fetch cases, fetched must match exactly.",
35
+ "how": "For each case: serve directory at /.well-known/http-message-signatures-directory and answer POST /api/v1/preflight with crawlcheck (status + body or text; unreachable = refuse the connection; by_op = the receipt for the operation asked, keyed \"METHOD url\"). Call the guard with request (pin nonce and now; pass operation when given). A fetch case also serves sites (url -> status, location, body) and records each URL the guard requested and which domain got the CrawlCheck-Receipt header. expect.proceed must match; for fetch cases, fetched must match exactly.",
28
36
  "cases": [
29
37
  {
30
38
  "id": "allow",
@@ -84,24 +92,24 @@
84
92
  },
85
93
  "resolve": {
86
94
  "sha256": "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
87
- "kid": "xrog-5dLQHQuXmIsVCTFRFfPSzLVonFLRoWdifn1AmE",
95
+ "kid": "erziRf8en6nlChFs1zqtfOHoOyD2GyiXW98t3SYpLuk",
88
96
  "leaf_hash": "cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc"
89
97
  },
90
- "sha256": "538189facc04db817956a840415c602c48cf9c29ce7b626fbd2d6cd2db3a2b72",
98
+ "sha256": "50d3f6f29675be47ea95321cc053ded2994af04aa181340c8b7ec835b9e9ee71",
91
99
  "signature": {
92
100
  "v": 1,
93
101
  "alg": "Ed25519",
94
- "kid": "xrog-5dLQHQuXmIsVCTFRFfPSzLVonFLRoWdifn1AmE",
102
+ "kid": "erziRf8en6nlChFs1zqtfOHoOyD2GyiXW98t3SYpLuk",
95
103
  "over": "sha256",
96
- "message": "crawlcheck-data-v1\n538189facc04db817956a840415c602c48cf9c29ce7b626fbd2d6cd2db3a2b72",
97
- "sig": "kebBznICRjh4gEDCOyvn4YRYaSxkCj4cvsRPWaC7NCCfPrFKgCiZHrVAFhODv_hWa7OfWpNvWME0Tio0W5UXAQ",
104
+ "message": "crawlcheck-data-v1\n50d3f6f29675be47ea95321cc053ded2994af04aa181340c8b7ec835b9e9ee71",
105
+ "sig": "zyjvcHeLxg2Cbpdqv5Pjkwg1ABGD8WQaLyeKwFf59fdtJEbYgvaYIdnYkebB3BVSTiPHRlisr85dvTWH0JF3Dg",
98
106
  "signed_at": "2026-10-10T15:59:00.000Z",
99
107
  "key": {
100
- "kid": "xrog-5dLQHQuXmIsVCTFRFfPSzLVonFLRoWdifn1AmE",
108
+ "kid": "erziRf8en6nlChFs1zqtfOHoOyD2GyiXW98t3SYpLuk",
101
109
  "jwk": {
102
110
  "kty": "OKP",
103
111
  "crv": "Ed25519",
104
- "x": "_EeVevPcJyuRWRCjFyG3-wRgmEdZmrn9tlBTvD31u8Q"
112
+ "x": "wS76C0bWq0ejgwsAlHq0imuG2HoW15ZeLhw9icbKbiA"
105
113
  },
106
114
  "published_in": "the suite's directory"
107
115
  }
@@ -170,24 +178,24 @@
170
178
  },
171
179
  "resolve": {
172
180
  "sha256": "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
173
- "kid": "xrog-5dLQHQuXmIsVCTFRFfPSzLVonFLRoWdifn1AmE",
181
+ "kid": "erziRf8en6nlChFs1zqtfOHoOyD2GyiXW98t3SYpLuk",
174
182
  "leaf_hash": "cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc"
175
183
  },
176
- "sha256": "4087deff63f28d80ab6e74f5f97e4071ded917926040b6218ba473d2c70e37a4",
184
+ "sha256": "761afb029b266825f1375975a8cb9c9666799d67a1a799d77dd4ba6515d15b95",
177
185
  "signature": {
178
186
  "v": 1,
179
187
  "alg": "Ed25519",
180
- "kid": "xrog-5dLQHQuXmIsVCTFRFfPSzLVonFLRoWdifn1AmE",
188
+ "kid": "erziRf8en6nlChFs1zqtfOHoOyD2GyiXW98t3SYpLuk",
181
189
  "over": "sha256",
182
- "message": "crawlcheck-data-v1\n4087deff63f28d80ab6e74f5f97e4071ded917926040b6218ba473d2c70e37a4",
183
- "sig": "-23BwyFV-Yo7YSFv56muqpu_15ByScrYC4zFvAwnP_6V9mkBNmF8_MSbl58B1XijAdlfLHuP4mH_CMf0qqHmAQ",
190
+ "message": "crawlcheck-data-v1\n761afb029b266825f1375975a8cb9c9666799d67a1a799d77dd4ba6515d15b95",
191
+ "sig": "hpC-X4lL02k6ElrOKNWviRfBALnPSx-PVoqZPUh-88zs4no44g2e5NnHxESOEY445guK7fPWoOjpjGVKi0TtAg",
184
192
  "signed_at": "2026-10-10T15:59:00.000Z",
185
193
  "key": {
186
- "kid": "xrog-5dLQHQuXmIsVCTFRFfPSzLVonFLRoWdifn1AmE",
194
+ "kid": "erziRf8en6nlChFs1zqtfOHoOyD2GyiXW98t3SYpLuk",
187
195
  "jwk": {
188
196
  "kty": "OKP",
189
197
  "crv": "Ed25519",
190
- "x": "_EeVevPcJyuRWRCjFyG3-wRgmEdZmrn9tlBTvD31u8Q"
198
+ "x": "wS76C0bWq0ejgwsAlHq0imuG2HoW15ZeLhw9icbKbiA"
191
199
  },
192
200
  "published_in": "the suite's directory"
193
201
  }
@@ -256,24 +264,24 @@
256
264
  },
257
265
  "resolve": {
258
266
  "sha256": "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
259
- "kid": "xrog-5dLQHQuXmIsVCTFRFfPSzLVonFLRoWdifn1AmE",
267
+ "kid": "erziRf8en6nlChFs1zqtfOHoOyD2GyiXW98t3SYpLuk",
260
268
  "leaf_hash": "cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc"
261
269
  },
262
- "sha256": "4087deff63f28d80ab6e74f5f97e4071ded917926040b6218ba473d2c70e37a4",
270
+ "sha256": "761afb029b266825f1375975a8cb9c9666799d67a1a799d77dd4ba6515d15b95",
263
271
  "signature": {
264
272
  "v": 1,
265
273
  "alg": "Ed25519",
266
- "kid": "xrog-5dLQHQuXmIsVCTFRFfPSzLVonFLRoWdifn1AmE",
274
+ "kid": "erziRf8en6nlChFs1zqtfOHoOyD2GyiXW98t3SYpLuk",
267
275
  "over": "sha256",
268
- "message": "crawlcheck-data-v1\n4087deff63f28d80ab6e74f5f97e4071ded917926040b6218ba473d2c70e37a4",
269
- "sig": "-23BwyFV-Yo7YSFv56muqpu_15ByScrYC4zFvAwnP_6V9mkBNmF8_MSbl58B1XijAdlfLHuP4mH_CMf0qqHmAQ",
276
+ "message": "crawlcheck-data-v1\n761afb029b266825f1375975a8cb9c9666799d67a1a799d77dd4ba6515d15b95",
277
+ "sig": "hpC-X4lL02k6ElrOKNWviRfBALnPSx-PVoqZPUh-88zs4no44g2e5NnHxESOEY445guK7fPWoOjpjGVKi0TtAg",
270
278
  "signed_at": "2026-10-10T15:59:00.000Z",
271
279
  "key": {
272
- "kid": "xrog-5dLQHQuXmIsVCTFRFfPSzLVonFLRoWdifn1AmE",
280
+ "kid": "erziRf8en6nlChFs1zqtfOHoOyD2GyiXW98t3SYpLuk",
273
281
  "jwk": {
274
282
  "kty": "OKP",
275
283
  "crv": "Ed25519",
276
- "x": "_EeVevPcJyuRWRCjFyG3-wRgmEdZmrn9tlBTvD31u8Q"
284
+ "x": "wS76C0bWq0ejgwsAlHq0imuG2HoW15ZeLhw9icbKbiA"
277
285
  },
278
286
  "published_in": "the suite's directory"
279
287
  }
@@ -342,24 +350,24 @@
342
350
  },
343
351
  "resolve": {
344
352
  "sha256": "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
345
- "kid": "xrog-5dLQHQuXmIsVCTFRFfPSzLVonFLRoWdifn1AmE",
353
+ "kid": "erziRf8en6nlChFs1zqtfOHoOyD2GyiXW98t3SYpLuk",
346
354
  "leaf_hash": "cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc"
347
355
  },
348
- "sha256": "52816e2c02e27246c3e4dd9e7b09990105fa05de6a45f0a1af19b333a471fc67",
356
+ "sha256": "5b1bd1c43fa65d9901ea36d5a223f37a7a4c1fd2742144ae8e185efa6e2b5647",
349
357
  "signature": {
350
358
  "v": 1,
351
359
  "alg": "Ed25519",
352
- "kid": "xrog-5dLQHQuXmIsVCTFRFfPSzLVonFLRoWdifn1AmE",
360
+ "kid": "erziRf8en6nlChFs1zqtfOHoOyD2GyiXW98t3SYpLuk",
353
361
  "over": "sha256",
354
- "message": "crawlcheck-data-v1\n52816e2c02e27246c3e4dd9e7b09990105fa05de6a45f0a1af19b333a471fc67",
355
- "sig": "tnsyDHKS55oKRw2VYB4uEJMNoMadfDzLrBHK1ZcXwTj3k0BKJVnkec04UlLvTgZy7g3XuWXLCQT1P7fSewwHCQ",
362
+ "message": "crawlcheck-data-v1\n5b1bd1c43fa65d9901ea36d5a223f37a7a4c1fd2742144ae8e185efa6e2b5647",
363
+ "sig": "esjVOrhtMOTmyoz2T8UbUsjs_11w2nQ7E2qHF_5bRJuapQPJf7iImL8wuPxK5xMchg2-IDzKkToO5MLYjlKOBw",
356
364
  "signed_at": "2026-10-10T15:59:00.000Z",
357
365
  "key": {
358
- "kid": "xrog-5dLQHQuXmIsVCTFRFfPSzLVonFLRoWdifn1AmE",
366
+ "kid": "erziRf8en6nlChFs1zqtfOHoOyD2GyiXW98t3SYpLuk",
359
367
  "jwk": {
360
368
  "kty": "OKP",
361
369
  "crv": "Ed25519",
362
- "x": "_EeVevPcJyuRWRCjFyG3-wRgmEdZmrn9tlBTvD31u8Q"
370
+ "x": "wS76C0bWq0ejgwsAlHq0imuG2HoW15ZeLhw9icbKbiA"
363
371
  },
364
372
  "published_in": "the suite's directory"
365
373
  }
@@ -428,24 +436,24 @@
428
436
  },
429
437
  "resolve": {
430
438
  "sha256": "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
431
- "kid": "xrog-5dLQHQuXmIsVCTFRFfPSzLVonFLRoWdifn1AmE",
439
+ "kid": "erziRf8en6nlChFs1zqtfOHoOyD2GyiXW98t3SYpLuk",
432
440
  "leaf_hash": "cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc"
433
441
  },
434
- "sha256": "52816e2c02e27246c3e4dd9e7b09990105fa05de6a45f0a1af19b333a471fc67",
442
+ "sha256": "5b1bd1c43fa65d9901ea36d5a223f37a7a4c1fd2742144ae8e185efa6e2b5647",
435
443
  "signature": {
436
444
  "v": 1,
437
445
  "alg": "Ed25519",
438
- "kid": "xrog-5dLQHQuXmIsVCTFRFfPSzLVonFLRoWdifn1AmE",
446
+ "kid": "erziRf8en6nlChFs1zqtfOHoOyD2GyiXW98t3SYpLuk",
439
447
  "over": "sha256",
440
- "message": "crawlcheck-data-v1\n52816e2c02e27246c3e4dd9e7b09990105fa05de6a45f0a1af19b333a471fc67",
441
- "sig": "tnsyDHKS55oKRw2VYB4uEJMNoMadfDzLrBHK1ZcXwTj3k0BKJVnkec04UlLvTgZy7g3XuWXLCQT1P7fSewwHCQ",
448
+ "message": "crawlcheck-data-v1\n5b1bd1c43fa65d9901ea36d5a223f37a7a4c1fd2742144ae8e185efa6e2b5647",
449
+ "sig": "esjVOrhtMOTmyoz2T8UbUsjs_11w2nQ7E2qHF_5bRJuapQPJf7iImL8wuPxK5xMchg2-IDzKkToO5MLYjlKOBw",
442
450
  "signed_at": "2026-10-10T15:59:00.000Z",
443
451
  "key": {
444
- "kid": "xrog-5dLQHQuXmIsVCTFRFfPSzLVonFLRoWdifn1AmE",
452
+ "kid": "erziRf8en6nlChFs1zqtfOHoOyD2GyiXW98t3SYpLuk",
445
453
  "jwk": {
446
454
  "kty": "OKP",
447
455
  "crv": "Ed25519",
448
- "x": "_EeVevPcJyuRWRCjFyG3-wRgmEdZmrn9tlBTvD31u8Q"
456
+ "x": "wS76C0bWq0ejgwsAlHq0imuG2HoW15ZeLhw9icbKbiA"
449
457
  },
450
458
  "published_in": "the suite's directory"
451
459
  }
@@ -514,24 +522,24 @@
514
522
  },
515
523
  "resolve": {
516
524
  "sha256": "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
517
- "kid": "xrog-5dLQHQuXmIsVCTFRFfPSzLVonFLRoWdifn1AmE",
525
+ "kid": "erziRf8en6nlChFs1zqtfOHoOyD2GyiXW98t3SYpLuk",
518
526
  "leaf_hash": "cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc"
519
527
  },
520
- "sha256": "52816e2c02e27246c3e4dd9e7b09990105fa05de6a45f0a1af19b333a471fc67",
528
+ "sha256": "5b1bd1c43fa65d9901ea36d5a223f37a7a4c1fd2742144ae8e185efa6e2b5647",
521
529
  "signature": {
522
530
  "v": 1,
523
531
  "alg": "Ed25519",
524
- "kid": "xrog-5dLQHQuXmIsVCTFRFfPSzLVonFLRoWdifn1AmE",
532
+ "kid": "erziRf8en6nlChFs1zqtfOHoOyD2GyiXW98t3SYpLuk",
525
533
  "over": "sha256",
526
- "message": "crawlcheck-data-v1\n52816e2c02e27246c3e4dd9e7b09990105fa05de6a45f0a1af19b333a471fc67",
527
- "sig": "tnsyDHKS55oKRw2VYB4uEJMNoMadfDzLrBHK1ZcXwTj3k0BKJVnkec04UlLvTgZy7g3XuWXLCQT1P7fSewwHCQ",
534
+ "message": "crawlcheck-data-v1\n5b1bd1c43fa65d9901ea36d5a223f37a7a4c1fd2742144ae8e185efa6e2b5647",
535
+ "sig": "esjVOrhtMOTmyoz2T8UbUsjs_11w2nQ7E2qHF_5bRJuapQPJf7iImL8wuPxK5xMchg2-IDzKkToO5MLYjlKOBw",
528
536
  "signed_at": "2026-10-10T15:59:00.000Z",
529
537
  "key": {
530
- "kid": "xrog-5dLQHQuXmIsVCTFRFfPSzLVonFLRoWdifn1AmE",
538
+ "kid": "erziRf8en6nlChFs1zqtfOHoOyD2GyiXW98t3SYpLuk",
531
539
  "jwk": {
532
540
  "kty": "OKP",
533
541
  "crv": "Ed25519",
534
- "x": "_EeVevPcJyuRWRCjFyG3-wRgmEdZmrn9tlBTvD31u8Q"
542
+ "x": "wS76C0bWq0ejgwsAlHq0imuG2HoW15ZeLhw9icbKbiA"
535
543
  },
536
544
  "published_in": "the suite's directory"
537
545
  }
@@ -600,24 +608,24 @@
600
608
  },
601
609
  "resolve": {
602
610
  "sha256": "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
603
- "kid": "xrog-5dLQHQuXmIsVCTFRFfPSzLVonFLRoWdifn1AmE",
611
+ "kid": "erziRf8en6nlChFs1zqtfOHoOyD2GyiXW98t3SYpLuk",
604
612
  "leaf_hash": "cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc"
605
613
  },
606
- "sha256": "522e43a3fa2a7497609711ac336e5b39c2031731959e416a6093b16e40545e6a",
614
+ "sha256": "06d6327467764d8a0d4fca6aae52adbff928d7583b040c59d4ad072849f25390",
607
615
  "signature": {
608
616
  "v": 1,
609
617
  "alg": "Ed25519",
610
- "kid": "xrog-5dLQHQuXmIsVCTFRFfPSzLVonFLRoWdifn1AmE",
618
+ "kid": "erziRf8en6nlChFs1zqtfOHoOyD2GyiXW98t3SYpLuk",
611
619
  "over": "sha256",
612
- "message": "crawlcheck-data-v1\n522e43a3fa2a7497609711ac336e5b39c2031731959e416a6093b16e40545e6a",
613
- "sig": "xiGho7xFzvBn12O6p0b6CvtET7ffAlSJpiUoX01BA3MazC69jlf7CghIEtJ8RmNoHzxYMiE4719AmRVHhsYnAg",
620
+ "message": "crawlcheck-data-v1\n06d6327467764d8a0d4fca6aae52adbff928d7583b040c59d4ad072849f25390",
621
+ "sig": "y0HF72RVSBJIJBfHyIbPLjnQ-tEZ2I7h35JEsfvOZxEPJ0oNAieEUy1BpIPryGS2vy7yRzJbG8njlYo77ZKnCA",
614
622
  "signed_at": "2026-10-10T15:59:00.000Z",
615
623
  "key": {
616
- "kid": "xrog-5dLQHQuXmIsVCTFRFfPSzLVonFLRoWdifn1AmE",
624
+ "kid": "erziRf8en6nlChFs1zqtfOHoOyD2GyiXW98t3SYpLuk",
617
625
  "jwk": {
618
626
  "kty": "OKP",
619
627
  "crv": "Ed25519",
620
- "x": "_EeVevPcJyuRWRCjFyG3-wRgmEdZmrn9tlBTvD31u8Q"
628
+ "x": "wS76C0bWq0ejgwsAlHq0imuG2HoW15ZeLhw9icbKbiA"
621
629
  },
622
630
  "published_in": "the suite's directory"
623
631
  }
@@ -686,24 +694,24 @@
686
694
  },
687
695
  "resolve": {
688
696
  "sha256": "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
689
- "kid": "xrog-5dLQHQuXmIsVCTFRFfPSzLVonFLRoWdifn1AmE",
697
+ "kid": "erziRf8en6nlChFs1zqtfOHoOyD2GyiXW98t3SYpLuk",
690
698
  "leaf_hash": "cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc"
691
699
  },
692
- "sha256": "c7fd52aca25a133afdd65b866ad34523c411fc064c7a40e647a2f1247028c406",
700
+ "sha256": "ddd1072fd4b2672d9927813be25a097998f307df5c78446fe1f5e94dcf6754d4",
693
701
  "signature": {
694
702
  "v": 1,
695
703
  "alg": "Ed25519",
696
- "kid": "xrog-5dLQHQuXmIsVCTFRFfPSzLVonFLRoWdifn1AmE",
704
+ "kid": "erziRf8en6nlChFs1zqtfOHoOyD2GyiXW98t3SYpLuk",
697
705
  "over": "sha256",
698
- "message": "crawlcheck-data-v1\nc7fd52aca25a133afdd65b866ad34523c411fc064c7a40e647a2f1247028c406",
699
- "sig": "inLocrxYkAYJLWcAr-c5wqxRGX-t7wt9j8Cie1XlTDzfZTlDDzhoo0_chdABkpkrYyLpEVazO9S2F4Y6Oee6CA",
706
+ "message": "crawlcheck-data-v1\nddd1072fd4b2672d9927813be25a097998f307df5c78446fe1f5e94dcf6754d4",
707
+ "sig": "eL4NAQr2ZsKPz23ARP9anLoVSMZsNfjhWK6_Qu-hZqn7sWbrtsnbca943Or5gm-3v7nwTTazaPzBw8BWIDHpDw",
700
708
  "signed_at": "2026-10-10T15:59:00.000Z",
701
709
  "key": {
702
- "kid": "xrog-5dLQHQuXmIsVCTFRFfPSzLVonFLRoWdifn1AmE",
710
+ "kid": "erziRf8en6nlChFs1zqtfOHoOyD2GyiXW98t3SYpLuk",
703
711
  "jwk": {
704
712
  "kty": "OKP",
705
713
  "crv": "Ed25519",
706
- "x": "_EeVevPcJyuRWRCjFyG3-wRgmEdZmrn9tlBTvD31u8Q"
714
+ "x": "wS76C0bWq0ejgwsAlHq0imuG2HoW15ZeLhw9icbKbiA"
707
715
  },
708
716
  "published_in": "the suite's directory"
709
717
  }
@@ -772,24 +780,24 @@
772
780
  },
773
781
  "resolve": {
774
782
  "sha256": "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
775
- "kid": "xrog-5dLQHQuXmIsVCTFRFfPSzLVonFLRoWdifn1AmE",
783
+ "kid": "erziRf8en6nlChFs1zqtfOHoOyD2GyiXW98t3SYpLuk",
776
784
  "leaf_hash": "cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc"
777
785
  },
778
- "sha256": "3b88ee12d02e097b2dd0eaa9a20359263cddf3e63755f6dae48dfa334b43ab07",
786
+ "sha256": "bf9bee6109573c19c49294e9740dec13a800a87c5debfe8f3b243dc2c0c93acd",
779
787
  "signature": {
780
788
  "v": 1,
781
789
  "alg": "Ed25519",
782
- "kid": "xrog-5dLQHQuXmIsVCTFRFfPSzLVonFLRoWdifn1AmE",
790
+ "kid": "erziRf8en6nlChFs1zqtfOHoOyD2GyiXW98t3SYpLuk",
783
791
  "over": "sha256",
784
- "message": "crawlcheck-data-v1\n3b88ee12d02e097b2dd0eaa9a20359263cddf3e63755f6dae48dfa334b43ab07",
785
- "sig": "nuSF6k8YHSlWF5klhgGZ_-XFkP4rvxszED9WzFM2n54qY3i_du4R69yks6xyClK3nRoPO4j6_nWap2Cm40ucDg",
792
+ "message": "crawlcheck-data-v1\nbf9bee6109573c19c49294e9740dec13a800a87c5debfe8f3b243dc2c0c93acd",
793
+ "sig": "D4l-hRAQx2J4jPiUm3xfnAtYGvP7wdqXPEsbltFsAylfsHIqyMGZoUxIsK1HusHHhmScB-1-1pZsRMP-QWhhBA",
786
794
  "signed_at": "2026-10-10T15:59:00.000Z",
787
795
  "key": {
788
- "kid": "xrog-5dLQHQuXmIsVCTFRFfPSzLVonFLRoWdifn1AmE",
796
+ "kid": "erziRf8en6nlChFs1zqtfOHoOyD2GyiXW98t3SYpLuk",
789
797
  "jwk": {
790
798
  "kty": "OKP",
791
799
  "crv": "Ed25519",
792
- "x": "_EeVevPcJyuRWRCjFyG3-wRgmEdZmrn9tlBTvD31u8Q"
800
+ "x": "wS76C0bWq0ejgwsAlHq0imuG2HoW15ZeLhw9icbKbiA"
793
801
  },
794
802
  "published_in": "the suite's directory"
795
803
  }
@@ -858,24 +866,24 @@
858
866
  },
859
867
  "resolve": {
860
868
  "sha256": "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
861
- "kid": "xrog-5dLQHQuXmIsVCTFRFfPSzLVonFLRoWdifn1AmE",
869
+ "kid": "erziRf8en6nlChFs1zqtfOHoOyD2GyiXW98t3SYpLuk",
862
870
  "leaf_hash": "cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc"
863
871
  },
864
- "sha256": "29687918f0a949ebb8789fe718613a18698adfd5ae3162d828d0bb7174bc6626",
872
+ "sha256": "67ee0da1d5db557920dc7c17ca5ea7f7d085eaa2000916517e9045210138c627",
865
873
  "signature": {
866
874
  "v": 1,
867
875
  "alg": "Ed25519",
868
- "kid": "xrog-5dLQHQuXmIsVCTFRFfPSzLVonFLRoWdifn1AmE",
876
+ "kid": "erziRf8en6nlChFs1zqtfOHoOyD2GyiXW98t3SYpLuk",
869
877
  "over": "sha256",
870
- "message": "crawlcheck-data-v1\n29687918f0a949ebb8789fe718613a18698adfd5ae3162d828d0bb7174bc6626",
871
- "sig": "Qjr9IICsAsyxgc_oEvzg6LpiU2cDCHOujMLuJaM6x_4tFeT9nj2Axv1KslWwph9fjnPTFzw3yhl4iHTJD561CA",
878
+ "message": "crawlcheck-data-v1\n67ee0da1d5db557920dc7c17ca5ea7f7d085eaa2000916517e9045210138c627",
879
+ "sig": "rbJqN38K-QCxNVAkM-jkBJSD1cgF4VyMBLz2Sm99vrIq9G0ZKocwVgyNGjYmSr_mqUeqN-KlRBnJl5yk3-O4DA",
872
880
  "signed_at": "2026-10-10T15:59:00.000Z",
873
881
  "key": {
874
- "kid": "xrog-5dLQHQuXmIsVCTFRFfPSzLVonFLRoWdifn1AmE",
882
+ "kid": "erziRf8en6nlChFs1zqtfOHoOyD2GyiXW98t3SYpLuk",
875
883
  "jwk": {
876
884
  "kty": "OKP",
877
885
  "crv": "Ed25519",
878
- "x": "_EeVevPcJyuRWRCjFyG3-wRgmEdZmrn9tlBTvD31u8Q"
886
+ "x": "wS76C0bWq0ejgwsAlHq0imuG2HoW15ZeLhw9icbKbiA"
879
887
  },
880
888
  "published_in": "the suite's directory"
881
889
  }
@@ -944,24 +952,24 @@
944
952
  },
945
953
  "resolve": {
946
954
  "sha256": "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
947
- "kid": "xrog-5dLQHQuXmIsVCTFRFfPSzLVonFLRoWdifn1AmE",
955
+ "kid": "erziRf8en6nlChFs1zqtfOHoOyD2GyiXW98t3SYpLuk",
948
956
  "leaf_hash": "cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc"
949
957
  },
950
- "sha256": "538189facc04db817956a840415c602c48cf9c29ce7b626fbd2d6cd2db3a2b72",
958
+ "sha256": "50d3f6f29675be47ea95321cc053ded2994af04aa181340c8b7ec835b9e9ee71",
951
959
  "signature": {
952
960
  "v": 1,
953
961
  "alg": "Ed25519",
954
- "kid": "xrog-5dLQHQuXmIsVCTFRFfPSzLVonFLRoWdifn1AmE",
962
+ "kid": "erziRf8en6nlChFs1zqtfOHoOyD2GyiXW98t3SYpLuk",
955
963
  "over": "sha256",
956
- "message": "crawlcheck-data-v1\n538189facc04db817956a840415c602c48cf9c29ce7b626fbd2d6cd2db3a2b72",
957
- "sig": "kebBznICRjh4gEDCOyvn4YRYaSxkCj4cvsRPWaC7NCCfPrFKgCiZHrVAFhODv_hWa7OfWpNvWME0Tio0W5UXAQ",
964
+ "message": "crawlcheck-data-v1\n50d3f6f29675be47ea95321cc053ded2994af04aa181340c8b7ec835b9e9ee71",
965
+ "sig": "zyjvcHeLxg2Cbpdqv5Pjkwg1ABGD8WQaLyeKwFf59fdtJEbYgvaYIdnYkebB3BVSTiPHRlisr85dvTWH0JF3Dg",
958
966
  "signed_at": "2026-10-10T15:59:00.000Z",
959
967
  "key": {
960
- "kid": "xrog-5dLQHQuXmIsVCTFRFfPSzLVonFLRoWdifn1AmE",
968
+ "kid": "erziRf8en6nlChFs1zqtfOHoOyD2GyiXW98t3SYpLuk",
961
969
  "jwk": {
962
970
  "kty": "OKP",
963
971
  "crv": "Ed25519",
964
- "x": "_EeVevPcJyuRWRCjFyG3-wRgmEdZmrn9tlBTvD31u8Q"
972
+ "x": "wS76C0bWq0ejgwsAlHq0imuG2HoW15ZeLhw9icbKbiA"
965
973
  },
966
974
  "published_in": "the suite's directory"
967
975
  }
@@ -1030,24 +1038,24 @@
1030
1038
  },
1031
1039
  "resolve": {
1032
1040
  "sha256": "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
1033
- "kid": "xrog-5dLQHQuXmIsVCTFRFfPSzLVonFLRoWdifn1AmE",
1041
+ "kid": "erziRf8en6nlChFs1zqtfOHoOyD2GyiXW98t3SYpLuk",
1034
1042
  "leaf_hash": "cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc"
1035
1043
  },
1036
- "sha256": "538189facc04db817956a840415c602c48cf9c29ce7b626fbd2d6cd2db3a2b72",
1044
+ "sha256": "50d3f6f29675be47ea95321cc053ded2994af04aa181340c8b7ec835b9e9ee71",
1037
1045
  "signature": {
1038
1046
  "v": 1,
1039
1047
  "alg": "Ed25519",
1040
- "kid": "xrog-5dLQHQuXmIsVCTFRFfPSzLVonFLRoWdifn1AmE",
1048
+ "kid": "erziRf8en6nlChFs1zqtfOHoOyD2GyiXW98t3SYpLuk",
1041
1049
  "over": "sha256",
1042
- "message": "crawlcheck-data-v1\n538189facc04db817956a840415c602c48cf9c29ce7b626fbd2d6cd2db3a2b72",
1043
- "sig": "kebBznICRjh4gEDCOyvn4YRYaSxkCj4cvsRPWaC7NCCfPrFKgCiZHrVAFhODv_hWa7OfWpNvWME0Tio0W5UXAQ",
1050
+ "message": "crawlcheck-data-v1\n50d3f6f29675be47ea95321cc053ded2994af04aa181340c8b7ec835b9e9ee71",
1051
+ "sig": "zyjvcHeLxg2Cbpdqv5Pjkwg1ABGD8WQaLyeKwFf59fdtJEbYgvaYIdnYkebB3BVSTiPHRlisr85dvTWH0JF3Dg",
1044
1052
  "signed_at": "2026-10-10T15:59:00.000Z",
1045
1053
  "key": {
1046
- "kid": "xrog-5dLQHQuXmIsVCTFRFfPSzLVonFLRoWdifn1AmE",
1054
+ "kid": "erziRf8en6nlChFs1zqtfOHoOyD2GyiXW98t3SYpLuk",
1047
1055
  "jwk": {
1048
1056
  "kty": "OKP",
1049
1057
  "crv": "Ed25519",
1050
- "x": "_EeVevPcJyuRWRCjFyG3-wRgmEdZmrn9tlBTvD31u8Q"
1058
+ "x": "wS76C0bWq0ejgwsAlHq0imuG2HoW15ZeLhw9icbKbiA"
1051
1059
  },
1052
1060
  "published_in": "the suite's directory"
1053
1061
  }
@@ -1116,24 +1124,24 @@
1116
1124
  },
1117
1125
  "resolve": {
1118
1126
  "sha256": "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
1119
- "kid": "xrog-5dLQHQuXmIsVCTFRFfPSzLVonFLRoWdifn1AmE",
1127
+ "kid": "erziRf8en6nlChFs1zqtfOHoOyD2GyiXW98t3SYpLuk",
1120
1128
  "leaf_hash": "cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc"
1121
1129
  },
1122
- "sha256": "538189facc04db817956a840415c602c48cf9c29ce7b626fbd2d6cd2db3a2b72",
1130
+ "sha256": "50d3f6f29675be47ea95321cc053ded2994af04aa181340c8b7ec835b9e9ee71",
1123
1131
  "signature": {
1124
1132
  "v": 1,
1125
1133
  "alg": "Ed25519",
1126
- "kid": "xrog-5dLQHQuXmIsVCTFRFfPSzLVonFLRoWdifn1AmE",
1134
+ "kid": "erziRf8en6nlChFs1zqtfOHoOyD2GyiXW98t3SYpLuk",
1127
1135
  "over": "sha256",
1128
- "message": "crawlcheck-data-v1\n538189facc04db817956a840415c602c48cf9c29ce7b626fbd2d6cd2db3a2b72",
1129
- "sig": "kebBznICRjh4gEDCOyvn4YRYaSxkCj4cvsRPWaC7NCCfPrFKgCiZHrVAFhODv_hWa7OfWpNvWME0Tio0W5UXAQ",
1136
+ "message": "crawlcheck-data-v1\n50d3f6f29675be47ea95321cc053ded2994af04aa181340c8b7ec835b9e9ee71",
1137
+ "sig": "zyjvcHeLxg2Cbpdqv5Pjkwg1ABGD8WQaLyeKwFf59fdtJEbYgvaYIdnYkebB3BVSTiPHRlisr85dvTWH0JF3Dg",
1130
1138
  "signed_at": "2026-10-10T15:59:00.000Z",
1131
1139
  "key": {
1132
- "kid": "xrog-5dLQHQuXmIsVCTFRFfPSzLVonFLRoWdifn1AmE",
1140
+ "kid": "erziRf8en6nlChFs1zqtfOHoOyD2GyiXW98t3SYpLuk",
1133
1141
  "jwk": {
1134
1142
  "kty": "OKP",
1135
1143
  "crv": "Ed25519",
1136
- "x": "_EeVevPcJyuRWRCjFyG3-wRgmEdZmrn9tlBTvD31u8Q"
1144
+ "x": "wS76C0bWq0ejgwsAlHq0imuG2HoW15ZeLhw9icbKbiA"
1137
1145
  },
1138
1146
  "published_in": "the suite's directory"
1139
1147
  }
@@ -1202,24 +1210,24 @@
1202
1210
  },
1203
1211
  "resolve": {
1204
1212
  "sha256": "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
1205
- "kid": "xrog-5dLQHQuXmIsVCTFRFfPSzLVonFLRoWdifn1AmE",
1213
+ "kid": "erziRf8en6nlChFs1zqtfOHoOyD2GyiXW98t3SYpLuk",
1206
1214
  "leaf_hash": "cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc"
1207
1215
  },
1208
- "sha256": "4e16cdc5805460543702342938398e334ba33cf094bad8634736518264ef9a63",
1216
+ "sha256": "625182b8dd264a0cce75427bc5d6008c40a4f0e8f0de9b16ea0c16252361c9ff",
1209
1217
  "signature": {
1210
1218
  "v": 1,
1211
1219
  "alg": "Ed25519",
1212
- "kid": "xrog-5dLQHQuXmIsVCTFRFfPSzLVonFLRoWdifn1AmE",
1220
+ "kid": "erziRf8en6nlChFs1zqtfOHoOyD2GyiXW98t3SYpLuk",
1213
1221
  "over": "sha256",
1214
- "message": "crawlcheck-data-v1\n4e16cdc5805460543702342938398e334ba33cf094bad8634736518264ef9a63",
1215
- "sig": "eS7gUq43ulFerBhaVvsahhid8KJfSxy8FSJZUtrSAqig08HLteuLZXFUeOVKU2hYBxmqxg2R-mFFelnKV6GfBQ",
1222
+ "message": "crawlcheck-data-v1\n625182b8dd264a0cce75427bc5d6008c40a4f0e8f0de9b16ea0c16252361c9ff",
1223
+ "sig": "clK_iPPD1wyGnsSn0cTV319jcAlwskP4e-rUmirpifXKfjcfO8bl8W5q8qjWa1g6Evk4AARvnR7ZVPeBv_BpAg",
1216
1224
  "signed_at": "2026-10-09T15:00:00.000Z",
1217
1225
  "key": {
1218
- "kid": "xrog-5dLQHQuXmIsVCTFRFfPSzLVonFLRoWdifn1AmE",
1226
+ "kid": "erziRf8en6nlChFs1zqtfOHoOyD2GyiXW98t3SYpLuk",
1219
1227
  "jwk": {
1220
1228
  "kty": "OKP",
1221
1229
  "crv": "Ed25519",
1222
- "x": "_EeVevPcJyuRWRCjFyG3-wRgmEdZmrn9tlBTvD31u8Q"
1230
+ "x": "wS76C0bWq0ejgwsAlHq0imuG2HoW15ZeLhw9icbKbiA"
1223
1231
  },
1224
1232
  "published_in": "the suite's directory"
1225
1233
  }
@@ -1288,24 +1296,24 @@
1288
1296
  },
1289
1297
  "resolve": {
1290
1298
  "sha256": "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
1291
- "kid": "xrog-5dLQHQuXmIsVCTFRFfPSzLVonFLRoWdifn1AmE",
1299
+ "kid": "erziRf8en6nlChFs1zqtfOHoOyD2GyiXW98t3SYpLuk",
1292
1300
  "leaf_hash": "cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc"
1293
1301
  },
1294
- "sha256": "bd9113e82fca1f8acd901cf549ba5d6f92ff2196b6eb95b2a1891e52bd6bc9fd",
1302
+ "sha256": "e4a24f66ce899f3756efa5f3bdd1f218c2b1fc7bdd005d2b1cbc41f70eb95031",
1295
1303
  "signature": {
1296
1304
  "v": 1,
1297
1305
  "alg": "Ed25519",
1298
- "kid": "xrog-5dLQHQuXmIsVCTFRFfPSzLVonFLRoWdifn1AmE",
1306
+ "kid": "erziRf8en6nlChFs1zqtfOHoOyD2GyiXW98t3SYpLuk",
1299
1307
  "over": "sha256",
1300
- "message": "crawlcheck-data-v1\nbd9113e82fca1f8acd901cf549ba5d6f92ff2196b6eb95b2a1891e52bd6bc9fd",
1301
- "sig": "FmOn2Uq2mvo38_JMySChVp8yGsmTJl4It5glmhYGqpql4Vo2cOzXtJbXLBENeWaV3jmVjjusCJpoFuYO8EHpCA",
1308
+ "message": "crawlcheck-data-v1\ne4a24f66ce899f3756efa5f3bdd1f218c2b1fc7bdd005d2b1cbc41f70eb95031",
1309
+ "sig": "isXNvywmCyChY5mIpP28fUsRTo4nNtCdjtmDuBtB5Upv-b7gue5iCzSXbjSfpfod4q84e61DJQ4dyP8t9kIpAg",
1302
1310
  "signed_at": "2026-10-09T15:59:00.000Z",
1303
1311
  "key": {
1304
- "kid": "xrog-5dLQHQuXmIsVCTFRFfPSzLVonFLRoWdifn1AmE",
1312
+ "kid": "erziRf8en6nlChFs1zqtfOHoOyD2GyiXW98t3SYpLuk",
1305
1313
  "jwk": {
1306
1314
  "kty": "OKP",
1307
1315
  "crv": "Ed25519",
1308
- "x": "_EeVevPcJyuRWRCjFyG3-wRgmEdZmrn9tlBTvD31u8Q"
1316
+ "x": "wS76C0bWq0ejgwsAlHq0imuG2HoW15ZeLhw9icbKbiA"
1309
1317
  },
1310
1318
  "published_in": "the suite's directory"
1311
1319
  }
@@ -1374,24 +1382,24 @@
1374
1382
  },
1375
1383
  "resolve": {
1376
1384
  "sha256": "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
1377
- "kid": "xrog-5dLQHQuXmIsVCTFRFfPSzLVonFLRoWdifn1AmE",
1385
+ "kid": "erziRf8en6nlChFs1zqtfOHoOyD2GyiXW98t3SYpLuk",
1378
1386
  "leaf_hash": "cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc"
1379
1387
  },
1380
- "sha256": "e7f4b304881647523514b6da29349bf10de4bf7fb646b7f262628dcc92243733",
1388
+ "sha256": "a000f67936a9d86f77346639c913e09d17ed45d4dccf21bc1e5d3b6bb81f63af",
1381
1389
  "signature": {
1382
1390
  "v": 1,
1383
1391
  "alg": "Ed25519",
1384
- "kid": "xrog-5dLQHQuXmIsVCTFRFfPSzLVonFLRoWdifn1AmE",
1392
+ "kid": "erziRf8en6nlChFs1zqtfOHoOyD2GyiXW98t3SYpLuk",
1385
1393
  "over": "sha256",
1386
- "message": "crawlcheck-data-v1\ne7f4b304881647523514b6da29349bf10de4bf7fb646b7f262628dcc92243733",
1387
- "sig": "cyyPmF-ogSRi1FwoP3YkWtjiyAwvKpwOSZP7Yg7XBkk6Dk_ElaWpsrG_7iFwL4HCCsNu_yaXlHL9Y2jR0SD5AA",
1394
+ "message": "crawlcheck-data-v1\na000f67936a9d86f77346639c913e09d17ed45d4dccf21bc1e5d3b6bb81f63af",
1395
+ "sig": "VhvcVmMkL6bFC1g07RQ6O-NwX4T3BRfpYk1t84OVWyl-BMr9NHgL2WqzcRXIGZLnfBmfAaB_WwUrvjGpA1FEDA",
1388
1396
  "signed_at": "2026-10-09T10:00:00.000Z",
1389
1397
  "key": {
1390
- "kid": "xrog-5dLQHQuXmIsVCTFRFfPSzLVonFLRoWdifn1AmE",
1398
+ "kid": "erziRf8en6nlChFs1zqtfOHoOyD2GyiXW98t3SYpLuk",
1391
1399
  "jwk": {
1392
1400
  "kty": "OKP",
1393
1401
  "crv": "Ed25519",
1394
- "x": "_EeVevPcJyuRWRCjFyG3-wRgmEdZmrn9tlBTvD31u8Q"
1402
+ "x": "wS76C0bWq0ejgwsAlHq0imuG2HoW15ZeLhw9icbKbiA"
1395
1403
  },
1396
1404
  "published_in": "the suite's directory"
1397
1405
  }
@@ -1460,24 +1468,24 @@
1460
1468
  },
1461
1469
  "resolve": {
1462
1470
  "sha256": "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
1463
- "kid": "xrog-5dLQHQuXmIsVCTFRFfPSzLVonFLRoWdifn1AmE",
1471
+ "kid": "erziRf8en6nlChFs1zqtfOHoOyD2GyiXW98t3SYpLuk",
1464
1472
  "leaf_hash": "cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc"
1465
1473
  },
1466
- "sha256": "5ed156bb141263c98315b8bfb7d64b7930f618028c42afee2ec7a330f046432e",
1474
+ "sha256": "1cd550eb7eb80f4dfecb90c6ae60dbfe27fb7f03fe79dea4bb6499238abcd281",
1467
1475
  "signature": {
1468
1476
  "v": 1,
1469
1477
  "alg": "Ed25519",
1470
- "kid": "xrog-5dLQHQuXmIsVCTFRFfPSzLVonFLRoWdifn1AmE",
1478
+ "kid": "erziRf8en6nlChFs1zqtfOHoOyD2GyiXW98t3SYpLuk",
1471
1479
  "over": "sha256",
1472
- "message": "crawlcheck-data-v1\n5ed156bb141263c98315b8bfb7d64b7930f618028c42afee2ec7a330f046432e",
1473
- "sig": "sRrKuSXcSvHmuPcfWHXG1LIurqafnNtE4AB8gFNCrBq9u0Ng9p5FrovvhMdVkBoqWL23b1oq_EQoZg3nE4rxCw",
1480
+ "message": "crawlcheck-data-v1\n1cd550eb7eb80f4dfecb90c6ae60dbfe27fb7f03fe79dea4bb6499238abcd281",
1481
+ "sig": "Mevm7uqCG6WbD1-R53-YpYyJ-t17i-Xpp9fnqTLjEQ_ETLQXmpIQoJxg-k1Dw3mu9-EqiMePXYWgoBdb57ceBg",
1474
1482
  "signed_at": "2026-10-10T17:00:00.000Z",
1475
1483
  "key": {
1476
- "kid": "xrog-5dLQHQuXmIsVCTFRFfPSzLVonFLRoWdifn1AmE",
1484
+ "kid": "erziRf8en6nlChFs1zqtfOHoOyD2GyiXW98t3SYpLuk",
1477
1485
  "jwk": {
1478
1486
  "kty": "OKP",
1479
1487
  "crv": "Ed25519",
1480
- "x": "_EeVevPcJyuRWRCjFyG3-wRgmEdZmrn9tlBTvD31u8Q"
1488
+ "x": "wS76C0bWq0ejgwsAlHq0imuG2HoW15ZeLhw9icbKbiA"
1481
1489
  },
1482
1490
  "published_in": "the suite's directory"
1483
1491
  }
@@ -1546,24 +1554,24 @@
1546
1554
  },
1547
1555
  "resolve": {
1548
1556
  "sha256": "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
1549
- "kid": "xrog-5dLQHQuXmIsVCTFRFfPSzLVonFLRoWdifn1AmE",
1557
+ "kid": "erziRf8en6nlChFs1zqtfOHoOyD2GyiXW98t3SYpLuk",
1550
1558
  "leaf_hash": "cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc"
1551
1559
  },
1552
- "sha256": "518e63f730cfa51ef8c7b6f92b277d42d337e86c531b2c66601d0124e6b28ebf",
1560
+ "sha256": "3db5db419cb4f69201989195c769b6046a33f536fd3f1bc0750b73b10822aa6d",
1553
1561
  "signature": {
1554
1562
  "v": 1,
1555
1563
  "alg": "Ed25519",
1556
- "kid": "xrog-5dLQHQuXmIsVCTFRFfPSzLVonFLRoWdifn1AmE",
1564
+ "kid": "erziRf8en6nlChFs1zqtfOHoOyD2GyiXW98t3SYpLuk",
1557
1565
  "over": "sha256",
1558
- "message": "crawlcheck-data-v1\n518e63f730cfa51ef8c7b6f92b277d42d337e86c531b2c66601d0124e6b28ebf",
1559
- "sig": "dMQH-IMugStO8ZrjpO1VMgYcV82YQVAxeiZCfOUOGrLFAahPjjbQMJg4c97VUvae2wTqqjU8dqPycDbom_o3BQ",
1566
+ "message": "crawlcheck-data-v1\n3db5db419cb4f69201989195c769b6046a33f536fd3f1bc0750b73b10822aa6d",
1567
+ "sig": "LnzgUNN4ualijxNO4XDBVXpkKFHMLgrijCwIOvoH4xB3rUWZAchTw5Xvqyuvb1D8C215SlkZMd2Cl7gFLYFoCg",
1560
1568
  "signed_at": "2026-10-10T15:59:00.000Z",
1561
1569
  "key": {
1562
- "kid": "xrog-5dLQHQuXmIsVCTFRFfPSzLVonFLRoWdifn1AmE",
1570
+ "kid": "erziRf8en6nlChFs1zqtfOHoOyD2GyiXW98t3SYpLuk",
1563
1571
  "jwk": {
1564
1572
  "kty": "OKP",
1565
1573
  "crv": "Ed25519",
1566
- "x": "_EeVevPcJyuRWRCjFyG3-wRgmEdZmrn9tlBTvD31u8Q"
1574
+ "x": "wS76C0bWq0ejgwsAlHq0imuG2HoW15ZeLhw9icbKbiA"
1567
1575
  },
1568
1576
  "published_in": "the suite's directory"
1569
1577
  }
@@ -1632,24 +1640,24 @@
1632
1640
  },
1633
1641
  "resolve": {
1634
1642
  "sha256": "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
1635
- "kid": "xrog-5dLQHQuXmIsVCTFRFfPSzLVonFLRoWdifn1AmE",
1643
+ "kid": "erziRf8en6nlChFs1zqtfOHoOyD2GyiXW98t3SYpLuk",
1636
1644
  "leaf_hash": "cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc"
1637
1645
  },
1638
- "sha256": "38cbaa157d99a121b7739ce6180609667a9ea80878b4f1d048a24fefd8226662",
1646
+ "sha256": "a77cc3ddf138c80c63309749c5e1bc6c79ecb3b0927642bc97e698a5fea3ade1",
1639
1647
  "signature": {
1640
1648
  "v": 1,
1641
1649
  "alg": "Ed25519",
1642
- "kid": "xrog-5dLQHQuXmIsVCTFRFfPSzLVonFLRoWdifn1AmE",
1650
+ "kid": "erziRf8en6nlChFs1zqtfOHoOyD2GyiXW98t3SYpLuk",
1643
1651
  "over": "sha256",
1644
- "message": "crawlcheck-data-v1\n38cbaa157d99a121b7739ce6180609667a9ea80878b4f1d048a24fefd8226662",
1645
- "sig": "WOPwEQkLD30kLCHpA5eVx-Lqcbl--FPA2ET69eeNxAKTIbNlTtjyHDgavdFWfumAR_6JFaEL1NVhppqDijy0Bg",
1652
+ "message": "crawlcheck-data-v1\na77cc3ddf138c80c63309749c5e1bc6c79ecb3b0927642bc97e698a5fea3ade1",
1653
+ "sig": "t_ioKIlyonTjFfRbXjRFinIpSPqdpXJjjMEfPPQiSFKDDSECL44jxAUaHXEHtBMOxUlio5V7wHgnQWUCzsVuBA",
1646
1654
  "signed_at": "2026-10-10T15:59:00.000Z",
1647
1655
  "key": {
1648
- "kid": "xrog-5dLQHQuXmIsVCTFRFfPSzLVonFLRoWdifn1AmE",
1656
+ "kid": "erziRf8en6nlChFs1zqtfOHoOyD2GyiXW98t3SYpLuk",
1649
1657
  "jwk": {
1650
1658
  "kty": "OKP",
1651
1659
  "crv": "Ed25519",
1652
- "x": "_EeVevPcJyuRWRCjFyG3-wRgmEdZmrn9tlBTvD31u8Q"
1660
+ "x": "wS76C0bWq0ejgwsAlHq0imuG2HoW15ZeLhw9icbKbiA"
1653
1661
  },
1654
1662
  "published_in": "the suite's directory"
1655
1663
  }
@@ -1717,24 +1725,24 @@
1717
1725
  },
1718
1726
  "resolve": {
1719
1727
  "sha256": "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
1720
- "kid": "xrog-5dLQHQuXmIsVCTFRFfPSzLVonFLRoWdifn1AmE",
1728
+ "kid": "erziRf8en6nlChFs1zqtfOHoOyD2GyiXW98t3SYpLuk",
1721
1729
  "leaf_hash": "cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc"
1722
1730
  },
1723
- "sha256": "175b9ab45f76068da08b83cda4729043ca2765372671fa4066da4edaf0f76c47",
1731
+ "sha256": "b0f77a1f676935b69ffb4ce3101a7f85bad9ea5757f1743a68b5946fc34cf9fa",
1724
1732
  "signature": {
1725
1733
  "v": 1,
1726
1734
  "alg": "Ed25519",
1727
- "kid": "xrog-5dLQHQuXmIsVCTFRFfPSzLVonFLRoWdifn1AmE",
1735
+ "kid": "erziRf8en6nlChFs1zqtfOHoOyD2GyiXW98t3SYpLuk",
1728
1736
  "over": "sha256",
1729
- "message": "crawlcheck-data-v1\n175b9ab45f76068da08b83cda4729043ca2765372671fa4066da4edaf0f76c47",
1730
- "sig": "74Nx196-TvUaHI3if-OR2IqjdYj4rxbtNJ2A69LCXw9-XGrUSVsadWjrtkMsvFMCvspGDWzSCI9RC8zL9pBiDA",
1737
+ "message": "crawlcheck-data-v1\nb0f77a1f676935b69ffb4ce3101a7f85bad9ea5757f1743a68b5946fc34cf9fa",
1738
+ "sig": "cO-jYBNNUuI9RlKmm0wq6a82t_GOldcaTYVIdNSUQfOI-DNIBk4Hox--2MmnV3TH09A5meMLGQwPuqoCV0M6AA",
1731
1739
  "signed_at": "2026-10-10T15:59:00.000Z",
1732
1740
  "key": {
1733
- "kid": "xrog-5dLQHQuXmIsVCTFRFfPSzLVonFLRoWdifn1AmE",
1741
+ "kid": "erziRf8en6nlChFs1zqtfOHoOyD2GyiXW98t3SYpLuk",
1734
1742
  "jwk": {
1735
1743
  "kty": "OKP",
1736
1744
  "crv": "Ed25519",
1737
- "x": "_EeVevPcJyuRWRCjFyG3-wRgmEdZmrn9tlBTvD31u8Q"
1745
+ "x": "wS76C0bWq0ejgwsAlHq0imuG2HoW15ZeLhw9icbKbiA"
1738
1746
  },
1739
1747
  "published_in": "the suite's directory"
1740
1748
  }
@@ -1803,24 +1811,24 @@
1803
1811
  },
1804
1812
  "resolve": {
1805
1813
  "sha256": "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
1806
- "kid": "xrog-5dLQHQuXmIsVCTFRFfPSzLVonFLRoWdifn1AmE",
1814
+ "kid": "erziRf8en6nlChFs1zqtfOHoOyD2GyiXW98t3SYpLuk",
1807
1815
  "leaf_hash": "cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc"
1808
1816
  },
1809
- "sha256": "c10b5197019d39ccdc280e381611cc39fecb4599b3caaf054f2933f61617cce4",
1817
+ "sha256": "09f59c245bc53a39f385216fd9d237e53e1e66fe94d32630d63946ddde232548",
1810
1818
  "signature": {
1811
1819
  "v": 1,
1812
1820
  "alg": "Ed25519",
1813
- "kid": "xrog-5dLQHQuXmIsVCTFRFfPSzLVonFLRoWdifn1AmE",
1821
+ "kid": "erziRf8en6nlChFs1zqtfOHoOyD2GyiXW98t3SYpLuk",
1814
1822
  "over": "sha256",
1815
- "message": "crawlcheck-data-v1\nc10b5197019d39ccdc280e381611cc39fecb4599b3caaf054f2933f61617cce4",
1816
- "sig": "JMniM_hoBzoqjk5lxsZ_ZPOKE5jOs0X8veal7KukmwldWuVcf1iJNOtU8shwhPBSd1NiEJrVu1tsNz_F-DgDDQ",
1823
+ "message": "crawlcheck-data-v1\n09f59c245bc53a39f385216fd9d237e53e1e66fe94d32630d63946ddde232548",
1824
+ "sig": "WjvGxG-HlNgvC7TSZAMSypgBFw6WBP9kES9g6_mAU-WJbkgFOMYGYo54bVl8ZJdw7ooHQ2oIr3BKrjXHtlxsBQ",
1817
1825
  "signed_at": "2026-10-10T15:59:00.000Z",
1818
1826
  "key": {
1819
- "kid": "xrog-5dLQHQuXmIsVCTFRFfPSzLVonFLRoWdifn1AmE",
1827
+ "kid": "erziRf8en6nlChFs1zqtfOHoOyD2GyiXW98t3SYpLuk",
1820
1828
  "jwk": {
1821
1829
  "kty": "OKP",
1822
1830
  "crv": "Ed25519",
1823
- "x": "_EeVevPcJyuRWRCjFyG3-wRgmEdZmrn9tlBTvD31u8Q"
1831
+ "x": "wS76C0bWq0ejgwsAlHq0imuG2HoW15ZeLhw9icbKbiA"
1824
1832
  },
1825
1833
  "published_in": "the suite's directory"
1826
1834
  }
@@ -1888,24 +1896,24 @@
1888
1896
  },
1889
1897
  "resolve": {
1890
1898
  "sha256": "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
1891
- "kid": "xrog-5dLQHQuXmIsVCTFRFfPSzLVonFLRoWdifn1AmE",
1899
+ "kid": "erziRf8en6nlChFs1zqtfOHoOyD2GyiXW98t3SYpLuk",
1892
1900
  "leaf_hash": "cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc"
1893
1901
  },
1894
- "sha256": "a945f42028e11abc9c38c03935e08e5173d67531b115e51d134d7a6a2a4d6995",
1902
+ "sha256": "4cafa7313f3543b4fa1bb93c5e4a98065cfc77a2a0c47b7850e4c1ec780a804c",
1895
1903
  "signature": {
1896
1904
  "v": 1,
1897
1905
  "alg": "Ed25519",
1898
- "kid": "xrog-5dLQHQuXmIsVCTFRFfPSzLVonFLRoWdifn1AmE",
1906
+ "kid": "erziRf8en6nlChFs1zqtfOHoOyD2GyiXW98t3SYpLuk",
1899
1907
  "over": "sha256",
1900
- "message": "crawlcheck-data-v1\na945f42028e11abc9c38c03935e08e5173d67531b115e51d134d7a6a2a4d6995",
1901
- "sig": "lG3TABXmWO05i83q31YHtt8VI50Hpn8U93R-cdhgpE-yYSCC3dmSuPilc0HMqjO9IKzpDprwzAakxXlDF4nCAw",
1908
+ "message": "crawlcheck-data-v1\n4cafa7313f3543b4fa1bb93c5e4a98065cfc77a2a0c47b7850e4c1ec780a804c",
1909
+ "sig": "AtO5EYqxQi_SXpA2F6_OvSyK6h9DLE8VAhfHb2a3NZwuJpNjzMjSmMFZ4i2DXPxOMK91UQzzU4uKYSTCSGx8Dw",
1902
1910
  "signed_at": "2026-10-10T15:59:00.000Z",
1903
1911
  "key": {
1904
- "kid": "xrog-5dLQHQuXmIsVCTFRFfPSzLVonFLRoWdifn1AmE",
1912
+ "kid": "erziRf8en6nlChFs1zqtfOHoOyD2GyiXW98t3SYpLuk",
1905
1913
  "jwk": {
1906
1914
  "kty": "OKP",
1907
1915
  "crv": "Ed25519",
1908
- "x": "_EeVevPcJyuRWRCjFyG3-wRgmEdZmrn9tlBTvD31u8Q"
1916
+ "x": "wS76C0bWq0ejgwsAlHq0imuG2HoW15ZeLhw9icbKbiA"
1909
1917
  },
1910
1918
  "published_in": "the suite's directory"
1911
1919
  }
@@ -1917,16 +1925,20 @@
1917
1925
  }
1918
1926
  },
1919
1927
  {
1920
- "id": "tampered",
1921
- "title": "a block receipt edited to allow",
1922
- "why": "the digest no longer matches",
1928
+ "id": "op-match",
1929
+ "title": "a receipt for exactly this request",
1930
+ "why": "positive control",
1923
1931
  "request": {
1924
1932
  "domain": "good.example",
1925
1933
  "action": "read",
1926
1934
  "allow_warn": false,
1927
1935
  "confirm": null,
1928
1936
  "nonce": "ccguard-acceptance-0001",
1929
- "now": "2026-10-10T16:00:00.000Z"
1937
+ "now": "2026-10-10T16:00:00.000Z",
1938
+ "operation": {
1939
+ "method": "GET",
1940
+ "url": "https://good.example/a"
1941
+ }
1930
1942
  },
1931
1943
  "crawlcheck": {
1932
1944
  "status": 200,
@@ -1955,7 +1967,7 @@
1955
1967
  "rules_sha256": "18dd5636e0896692ab518050cb401744edea2e6f1086dff94fead314959bdc3e"
1956
1968
  },
1957
1969
  "decision": "allow",
1958
- "base_decision": "block",
1970
+ "base_decision": "allow",
1959
1971
  "human_confirmation_required": false,
1960
1972
  "reason_codes": [
1961
1973
  "resolve.actions.read"
@@ -1963,7 +1975,7 @@
1963
1975
  "steps": [
1964
1976
  {
1965
1977
  "rule": "resolve.actions.read",
1966
- "effect": "block",
1978
+ "effect": "allow",
1967
1979
  "why": "suite fixture"
1968
1980
  }
1969
1981
  ],
@@ -1974,24 +1986,28 @@
1974
1986
  },
1975
1987
  "resolve": {
1976
1988
  "sha256": "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
1977
- "kid": "xrog-5dLQHQuXmIsVCTFRFfPSzLVonFLRoWdifn1AmE",
1989
+ "kid": "erziRf8en6nlChFs1zqtfOHoOyD2GyiXW98t3SYpLuk",
1978
1990
  "leaf_hash": "cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc"
1979
1991
  },
1980
- "sha256": "522e43a3fa2a7497609711ac336e5b39c2031731959e416a6093b16e40545e6a",
1992
+ "operation": {
1993
+ "method": "GET",
1994
+ "url": "https://good.example/a"
1995
+ },
1996
+ "sha256": "52ee5980ea3a45f938f9749bd6dd7fe4ea44baa3cc33ad68147da216f1ddbb7d",
1981
1997
  "signature": {
1982
1998
  "v": 1,
1983
1999
  "alg": "Ed25519",
1984
- "kid": "xrog-5dLQHQuXmIsVCTFRFfPSzLVonFLRoWdifn1AmE",
2000
+ "kid": "erziRf8en6nlChFs1zqtfOHoOyD2GyiXW98t3SYpLuk",
1985
2001
  "over": "sha256",
1986
- "message": "crawlcheck-data-v1\n522e43a3fa2a7497609711ac336e5b39c2031731959e416a6093b16e40545e6a",
1987
- "sig": "xiGho7xFzvBn12O6p0b6CvtET7ffAlSJpiUoX01BA3MazC69jlf7CghIEtJ8RmNoHzxYMiE4719AmRVHhsYnAg",
2002
+ "message": "crawlcheck-data-v1\n52ee5980ea3a45f938f9749bd6dd7fe4ea44baa3cc33ad68147da216f1ddbb7d",
2003
+ "sig": "e4FDzMvLaGkBv9iHlI0YMfxIax54-6tVvjUlFKKFTVV9dez1wkrHKVod9u2Ecs0RzIDY7H4dFncm8cQ0iRtyBw",
1988
2004
  "signed_at": "2026-10-10T15:59:00.000Z",
1989
2005
  "key": {
1990
- "kid": "xrog-5dLQHQuXmIsVCTFRFfPSzLVonFLRoWdifn1AmE",
2006
+ "kid": "erziRf8en6nlChFs1zqtfOHoOyD2GyiXW98t3SYpLuk",
1991
2007
  "jwk": {
1992
2008
  "kty": "OKP",
1993
2009
  "crv": "Ed25519",
1994
- "x": "_EeVevPcJyuRWRCjFyG3-wRgmEdZmrn9tlBTvD31u8Q"
2010
+ "x": "wS76C0bWq0ejgwsAlHq0imuG2HoW15ZeLhw9icbKbiA"
1995
2011
  },
1996
2012
  "published_in": "the suite's directory"
1997
2013
  }
@@ -1999,20 +2015,24 @@
1999
2015
  }
2000
2016
  },
2001
2017
  "expect": {
2002
- "proceed": false
2018
+ "proceed": true
2003
2019
  }
2004
2020
  },
2005
2021
  {
2006
- "id": "tampered-unsigned-field",
2007
- "title": "a field added after signing",
2008
- "why": "every field is signed",
2022
+ "id": "op-other-url",
2023
+ "title": "a receipt for another URL on the same domain",
2024
+ "why": "a receipt is valid only for the request it names",
2009
2025
  "request": {
2010
2026
  "domain": "good.example",
2011
2027
  "action": "read",
2012
2028
  "allow_warn": false,
2013
2029
  "confirm": null,
2014
2030
  "nonce": "ccguard-acceptance-0001",
2015
- "now": "2026-10-10T16:00:00.000Z"
2031
+ "now": "2026-10-10T16:00:00.000Z",
2032
+ "operation": {
2033
+ "method": "GET",
2034
+ "url": "https://good.example/a"
2035
+ }
2016
2036
  },
2017
2037
  "crawlcheck": {
2018
2038
  "status": 200,
@@ -2060,29 +2080,32 @@
2060
2080
  },
2061
2081
  "resolve": {
2062
2082
  "sha256": "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
2063
- "kid": "xrog-5dLQHQuXmIsVCTFRFfPSzLVonFLRoWdifn1AmE",
2083
+ "kid": "erziRf8en6nlChFs1zqtfOHoOyD2GyiXW98t3SYpLuk",
2064
2084
  "leaf_hash": "cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc"
2065
2085
  },
2066
- "sha256": "538189facc04db817956a840415c602c48cf9c29ce7b626fbd2d6cd2db3a2b72",
2086
+ "operation": {
2087
+ "method": "GET",
2088
+ "url": "https://good.example/b"
2089
+ },
2090
+ "sha256": "dd4231d4daa44acd9033c70dfe05a201f2540c43c9cad322480746b9610b77e4",
2067
2091
  "signature": {
2068
2092
  "v": 1,
2069
2093
  "alg": "Ed25519",
2070
- "kid": "xrog-5dLQHQuXmIsVCTFRFfPSzLVonFLRoWdifn1AmE",
2094
+ "kid": "erziRf8en6nlChFs1zqtfOHoOyD2GyiXW98t3SYpLuk",
2071
2095
  "over": "sha256",
2072
- "message": "crawlcheck-data-v1\n538189facc04db817956a840415c602c48cf9c29ce7b626fbd2d6cd2db3a2b72",
2073
- "sig": "kebBznICRjh4gEDCOyvn4YRYaSxkCj4cvsRPWaC7NCCfPrFKgCiZHrVAFhODv_hWa7OfWpNvWME0Tio0W5UXAQ",
2096
+ "message": "crawlcheck-data-v1\ndd4231d4daa44acd9033c70dfe05a201f2540c43c9cad322480746b9610b77e4",
2097
+ "sig": "o6bM9TTpxqvMzFDBY1bitjqUyZu1nOX-U9MoeG6CJ_NoOsNIrciP-py7qyRmow8hxdM40O8UHz1H8WDtfEWYBw",
2074
2098
  "signed_at": "2026-10-10T15:59:00.000Z",
2075
2099
  "key": {
2076
- "kid": "xrog-5dLQHQuXmIsVCTFRFfPSzLVonFLRoWdifn1AmE",
2100
+ "kid": "erziRf8en6nlChFs1zqtfOHoOyD2GyiXW98t3SYpLuk",
2077
2101
  "jwk": {
2078
2102
  "kty": "OKP",
2079
2103
  "crv": "Ed25519",
2080
- "x": "_EeVevPcJyuRWRCjFyG3-wRgmEdZmrn9tlBTvD31u8Q"
2104
+ "x": "wS76C0bWq0ejgwsAlHq0imuG2HoW15ZeLhw9icbKbiA"
2081
2105
  },
2082
2106
  "published_in": "the suite's directory"
2083
2107
  }
2084
- },
2085
- "x_note": "added later"
2108
+ }
2086
2109
  }
2087
2110
  },
2088
2111
  "expect": {
@@ -2090,16 +2113,20 @@
2090
2113
  }
2091
2114
  },
2092
2115
  {
2093
- "id": "unknown-signed-field",
2094
- "title": "an unknown field that was signed",
2095
- "why": "forward compatible: ignore unknown fields, but only signed ones",
2116
+ "id": "op-other-method",
2117
+ "title": "a GET receipt used for a POST",
2118
+ "why": "",
2096
2119
  "request": {
2097
2120
  "domain": "good.example",
2098
2121
  "action": "read",
2099
2122
  "allow_warn": false,
2100
2123
  "confirm": null,
2101
2124
  "nonce": "ccguard-acceptance-0001",
2102
- "now": "2026-10-10T16:00:00.000Z"
2125
+ "now": "2026-10-10T16:00:00.000Z",
2126
+ "operation": {
2127
+ "method": "POST",
2128
+ "url": "https://good.example/a"
2129
+ }
2103
2130
  },
2104
2131
  "crawlcheck": {
2105
2132
  "status": 200,
@@ -2147,27 +2174,28 @@
2147
2174
  },
2148
2175
  "resolve": {
2149
2176
  "sha256": "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
2150
- "kid": "xrog-5dLQHQuXmIsVCTFRFfPSzLVonFLRoWdifn1AmE",
2177
+ "kid": "erziRf8en6nlChFs1zqtfOHoOyD2GyiXW98t3SYpLuk",
2151
2178
  "leaf_hash": "cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc"
2152
2179
  },
2153
- "x_future_field": {
2154
- "a": 1
2180
+ "operation": {
2181
+ "method": "GET",
2182
+ "url": "https://good.example/a"
2155
2183
  },
2156
- "sha256": "487bebaef655eb80fbd3a2a40a37175ac7400593f469f55624a4be7340c91d43",
2184
+ "sha256": "52ee5980ea3a45f938f9749bd6dd7fe4ea44baa3cc33ad68147da216f1ddbb7d",
2157
2185
  "signature": {
2158
2186
  "v": 1,
2159
2187
  "alg": "Ed25519",
2160
- "kid": "xrog-5dLQHQuXmIsVCTFRFfPSzLVonFLRoWdifn1AmE",
2188
+ "kid": "erziRf8en6nlChFs1zqtfOHoOyD2GyiXW98t3SYpLuk",
2161
2189
  "over": "sha256",
2162
- "message": "crawlcheck-data-v1\n487bebaef655eb80fbd3a2a40a37175ac7400593f469f55624a4be7340c91d43",
2163
- "sig": "HkbhFMAmngLxT7qDoJiC5iMaTWI3c-VzEZyOJstCDZTwxzM0JvpsJcKHrx1bAhfyq1SfN6BfrdYi06n3I3CqCg",
2190
+ "message": "crawlcheck-data-v1\n52ee5980ea3a45f938f9749bd6dd7fe4ea44baa3cc33ad68147da216f1ddbb7d",
2191
+ "sig": "e4FDzMvLaGkBv9iHlI0YMfxIax54-6tVvjUlFKKFTVV9dez1wkrHKVod9u2Ecs0RzIDY7H4dFncm8cQ0iRtyBw",
2164
2192
  "signed_at": "2026-10-10T15:59:00.000Z",
2165
2193
  "key": {
2166
- "kid": "xrog-5dLQHQuXmIsVCTFRFfPSzLVonFLRoWdifn1AmE",
2194
+ "kid": "erziRf8en6nlChFs1zqtfOHoOyD2GyiXW98t3SYpLuk",
2167
2195
  "jwk": {
2168
2196
  "kty": "OKP",
2169
2197
  "crv": "Ed25519",
2170
- "x": "_EeVevPcJyuRWRCjFyG3-wRgmEdZmrn9tlBTvD31u8Q"
2198
+ "x": "wS76C0bWq0ejgwsAlHq0imuG2HoW15ZeLhw9icbKbiA"
2171
2199
  },
2172
2200
  "published_in": "the suite's directory"
2173
2201
  }
@@ -2175,20 +2203,24 @@
2175
2203
  }
2176
2204
  },
2177
2205
  "expect": {
2178
- "proceed": true
2206
+ "proceed": false
2179
2207
  }
2180
2208
  },
2181
2209
  {
2182
- "id": "foreign-key",
2183
- "title": "a valid signature by a key CrawlCheck does not publish",
2184
- "why": "integrity is not trust",
2210
+ "id": "op-missing",
2211
+ "title": "the request names an operation, the receipt names none",
2212
+ "why": "an unscoped receipt cannot stand in for a scoped one",
2185
2213
  "request": {
2186
2214
  "domain": "good.example",
2187
2215
  "action": "read",
2188
2216
  "allow_warn": false,
2189
2217
  "confirm": null,
2190
2218
  "nonce": "ccguard-acceptance-0001",
2191
- "now": "2026-10-10T16:00:00.000Z"
2219
+ "now": "2026-10-10T16:00:00.000Z",
2220
+ "operation": {
2221
+ "method": "GET",
2222
+ "url": "https://good.example/a"
2223
+ }
2192
2224
  },
2193
2225
  "crawlcheck": {
2194
2226
  "status": 200,
@@ -2236,24 +2268,24 @@
2236
2268
  },
2237
2269
  "resolve": {
2238
2270
  "sha256": "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
2239
- "kid": "xrog-5dLQHQuXmIsVCTFRFfPSzLVonFLRoWdifn1AmE",
2271
+ "kid": "erziRf8en6nlChFs1zqtfOHoOyD2GyiXW98t3SYpLuk",
2240
2272
  "leaf_hash": "cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc"
2241
2273
  },
2242
- "sha256": "538189facc04db817956a840415c602c48cf9c29ce7b626fbd2d6cd2db3a2b72",
2274
+ "sha256": "50d3f6f29675be47ea95321cc053ded2994af04aa181340c8b7ec835b9e9ee71",
2243
2275
  "signature": {
2244
2276
  "v": 1,
2245
2277
  "alg": "Ed25519",
2246
- "kid": "hiz1BvdOLd02B_tacU8Ps3pnx-QPuaZiI7DrU-_BMqo",
2278
+ "kid": "erziRf8en6nlChFs1zqtfOHoOyD2GyiXW98t3SYpLuk",
2247
2279
  "over": "sha256",
2248
- "message": "crawlcheck-data-v1\n538189facc04db817956a840415c602c48cf9c29ce7b626fbd2d6cd2db3a2b72",
2249
- "sig": "hSzvxKW0rwKP83tqJyzp-dQF0TJ55Z9dl9FLuwmXemOeuaXqmTTji5EpWr5w-g24O4Qzhrtp0p1TMSAMflF9AQ",
2280
+ "message": "crawlcheck-data-v1\n50d3f6f29675be47ea95321cc053ded2994af04aa181340c8b7ec835b9e9ee71",
2281
+ "sig": "zyjvcHeLxg2Cbpdqv5Pjkwg1ABGD8WQaLyeKwFf59fdtJEbYgvaYIdnYkebB3BVSTiPHRlisr85dvTWH0JF3Dg",
2250
2282
  "signed_at": "2026-10-10T15:59:00.000Z",
2251
2283
  "key": {
2252
- "kid": "hiz1BvdOLd02B_tacU8Ps3pnx-QPuaZiI7DrU-_BMqo",
2284
+ "kid": "erziRf8en6nlChFs1zqtfOHoOyD2GyiXW98t3SYpLuk",
2253
2285
  "jwk": {
2254
2286
  "kty": "OKP",
2255
2287
  "crv": "Ed25519",
2256
- "x": "6MBlSJe5bf02wl5uX3c01ubBjBTQLR4wDnu08DytZYU"
2288
+ "x": "wS76C0bWq0ejgwsAlHq0imuG2HoW15ZeLhw9icbKbiA"
2257
2289
  },
2258
2290
  "published_in": "the suite's directory"
2259
2291
  }
@@ -2265,16 +2297,20 @@
2265
2297
  }
2266
2298
  },
2267
2299
  {
2268
- "id": "kid-mismatch",
2269
- "title": "a published kid on a signature by another key",
2270
- "why": "the key id must be the key's thumbprint",
2300
+ "id": "op-tool-schema",
2301
+ "title": "a receipt for the same tool with a different definition",
2302
+ "why": "the tool changed since it was decided",
2271
2303
  "request": {
2272
2304
  "domain": "good.example",
2273
- "action": "read",
2305
+ "action": "connect",
2274
2306
  "allow_warn": false,
2275
2307
  "confirm": null,
2276
2308
  "nonce": "ccguard-acceptance-0001",
2277
- "now": "2026-10-10T16:00:00.000Z"
2309
+ "now": "2026-10-10T16:00:00.000Z",
2310
+ "operation": {
2311
+ "tool": "search",
2312
+ "tool_schema_sha256": "1111111111111111111111111111111111111111111111111111111111111111"
2313
+ }
2278
2314
  },
2279
2315
  "crawlcheck": {
2280
2316
  "status": 200,
@@ -2282,11 +2318,11 @@
2282
2318
  "kind": "crawlcheck-decision",
2283
2319
  "v": 1,
2284
2320
  "decided_at": "2026-10-10T15:59:00.000Z",
2285
- "expires_at": "2026-10-11T15:59:00.000Z",
2321
+ "expires_at": "2026-10-10T16:59:00.000Z",
2286
2322
  "clock_skew_s": 300,
2287
2323
  "nonce": "ccguard-acceptance-0001",
2288
2324
  "domain": "good.example",
2289
- "action": "read",
2325
+ "action": "connect",
2290
2326
  "agent": null,
2291
2327
  "template": null,
2292
2328
  "policy": {
@@ -2306,11 +2342,11 @@
2306
2342
  "base_decision": "allow",
2307
2343
  "human_confirmation_required": false,
2308
2344
  "reason_codes": [
2309
- "resolve.actions.read"
2345
+ "resolve.actions.connect"
2310
2346
  ],
2311
2347
  "steps": [
2312
2348
  {
2313
- "rule": "resolve.actions.read",
2349
+ "rule": "resolve.actions.connect",
2314
2350
  "effect": "allow",
2315
2351
  "why": "suite fixture"
2316
2352
  }
@@ -2322,24 +2358,28 @@
2322
2358
  },
2323
2359
  "resolve": {
2324
2360
  "sha256": "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
2325
- "kid": "xrog-5dLQHQuXmIsVCTFRFfPSzLVonFLRoWdifn1AmE",
2361
+ "kid": "erziRf8en6nlChFs1zqtfOHoOyD2GyiXW98t3SYpLuk",
2326
2362
  "leaf_hash": "cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc"
2327
2363
  },
2328
- "sha256": "538189facc04db817956a840415c602c48cf9c29ce7b626fbd2d6cd2db3a2b72",
2364
+ "operation": {
2365
+ "tool": "search",
2366
+ "tool_schema_sha256": "2222222222222222222222222222222222222222222222222222222222222222"
2367
+ },
2368
+ "sha256": "74549f99fb0196109c6a9b93bb30286a72935362f1eef3b32911e75d4b2a4c4d",
2329
2369
  "signature": {
2330
2370
  "v": 1,
2331
2371
  "alg": "Ed25519",
2332
- "kid": "xrog-5dLQHQuXmIsVCTFRFfPSzLVonFLRoWdifn1AmE",
2372
+ "kid": "erziRf8en6nlChFs1zqtfOHoOyD2GyiXW98t3SYpLuk",
2333
2373
  "over": "sha256",
2334
- "message": "crawlcheck-data-v1\n538189facc04db817956a840415c602c48cf9c29ce7b626fbd2d6cd2db3a2b72",
2335
- "sig": "hSzvxKW0rwKP83tqJyzp-dQF0TJ55Z9dl9FLuwmXemOeuaXqmTTji5EpWr5w-g24O4Qzhrtp0p1TMSAMflF9AQ",
2374
+ "message": "crawlcheck-data-v1\n74549f99fb0196109c6a9b93bb30286a72935362f1eef3b32911e75d4b2a4c4d",
2375
+ "sig": "5OOZM4oYf-4V_fpsrTpx_1__87Lwt1gSvvl-_v0Uy3psBwphvSkDcxToax3XVRNpebKBBNVMXhEkB4ohS0ftAQ",
2336
2376
  "signed_at": "2026-10-10T15:59:00.000Z",
2337
2377
  "key": {
2338
- "kid": "xrog-5dLQHQuXmIsVCTFRFfPSzLVonFLRoWdifn1AmE",
2378
+ "kid": "erziRf8en6nlChFs1zqtfOHoOyD2GyiXW98t3SYpLuk",
2339
2379
  "jwk": {
2340
2380
  "kty": "OKP",
2341
2381
  "crv": "Ed25519",
2342
- "x": "6MBlSJe5bf02wl5uX3c01ubBjBTQLR4wDnu08DytZYU"
2382
+ "x": "wS76C0bWq0ejgwsAlHq0imuG2HoW15ZeLhw9icbKbiA"
2343
2383
  },
2344
2384
  "published_in": "the suite's directory"
2345
2385
  }
@@ -2351,16 +2391,24 @@
2351
2391
  }
2352
2392
  },
2353
2393
  {
2354
- "id": "unsigned",
2355
- "title": "no signature",
2394
+ "id": "op-scopes",
2395
+ "title": "a receipt for fewer scopes than requested",
2356
2396
  "why": "",
2357
2397
  "request": {
2358
2398
  "domain": "good.example",
2359
- "action": "read",
2399
+ "action": "connect",
2360
2400
  "allow_warn": false,
2361
2401
  "confirm": null,
2362
2402
  "nonce": "ccguard-acceptance-0001",
2363
- "now": "2026-10-10T16:00:00.000Z"
2403
+ "now": "2026-10-10T16:00:00.000Z",
2404
+ "operation": {
2405
+ "tool": "search",
2406
+ "tool_schema_sha256": "1111111111111111111111111111111111111111111111111111111111111111",
2407
+ "scopes": [
2408
+ "read",
2409
+ "write"
2410
+ ]
2411
+ }
2364
2412
  },
2365
2413
  "crawlcheck": {
2366
2414
  "status": 200,
@@ -2368,11 +2416,11 @@
2368
2416
  "kind": "crawlcheck-decision",
2369
2417
  "v": 1,
2370
2418
  "decided_at": "2026-10-10T15:59:00.000Z",
2371
- "expires_at": "2026-10-11T15:59:00.000Z",
2419
+ "expires_at": "2026-10-10T16:59:00.000Z",
2372
2420
  "clock_skew_s": 300,
2373
2421
  "nonce": "ccguard-acceptance-0001",
2374
2422
  "domain": "good.example",
2375
- "action": "read",
2423
+ "action": "connect",
2376
2424
  "agent": null,
2377
2425
  "template": null,
2378
2426
  "policy": {
@@ -2392,11 +2440,11 @@
2392
2440
  "base_decision": "allow",
2393
2441
  "human_confirmation_required": false,
2394
2442
  "reason_codes": [
2395
- "resolve.actions.read"
2443
+ "resolve.actions.connect"
2396
2444
  ],
2397
2445
  "steps": [
2398
2446
  {
2399
- "rule": "resolve.actions.read",
2447
+ "rule": "resolve.actions.connect",
2400
2448
  "effect": "allow",
2401
2449
  "why": "suite fixture"
2402
2450
  }
@@ -2408,10 +2456,35 @@
2408
2456
  },
2409
2457
  "resolve": {
2410
2458
  "sha256": "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
2411
- "kid": "xrog-5dLQHQuXmIsVCTFRFfPSzLVonFLRoWdifn1AmE",
2459
+ "kid": "erziRf8en6nlChFs1zqtfOHoOyD2GyiXW98t3SYpLuk",
2412
2460
  "leaf_hash": "cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc"
2413
2461
  },
2414
- "sha256": "538189facc04db817956a840415c602c48cf9c29ce7b626fbd2d6cd2db3a2b72"
2462
+ "operation": {
2463
+ "tool": "search",
2464
+ "tool_schema_sha256": "1111111111111111111111111111111111111111111111111111111111111111",
2465
+ "scopes": [
2466
+ "read"
2467
+ ]
2468
+ },
2469
+ "sha256": "ad621ec96c368ec1a8ad5f92d49154591e922a10fd831707c2b10921f0ef0e0b",
2470
+ "signature": {
2471
+ "v": 1,
2472
+ "alg": "Ed25519",
2473
+ "kid": "erziRf8en6nlChFs1zqtfOHoOyD2GyiXW98t3SYpLuk",
2474
+ "over": "sha256",
2475
+ "message": "crawlcheck-data-v1\nad621ec96c368ec1a8ad5f92d49154591e922a10fd831707c2b10921f0ef0e0b",
2476
+ "sig": "UGqt_1hlL4ONFvN2OjjUNeUCND2xnNrY16o4tKzw-crbAOF4uULmQ5gd1B3kJfH-jYCqGqWIN2MnwpZW0t2zCg",
2477
+ "signed_at": "2026-10-10T15:59:00.000Z",
2478
+ "key": {
2479
+ "kid": "erziRf8en6nlChFs1zqtfOHoOyD2GyiXW98t3SYpLuk",
2480
+ "jwk": {
2481
+ "kty": "OKP",
2482
+ "crv": "Ed25519",
2483
+ "x": "wS76C0bWq0ejgwsAlHq0imuG2HoW15ZeLhw9icbKbiA"
2484
+ },
2485
+ "published_in": "the suite's directory"
2486
+ }
2487
+ }
2415
2488
  }
2416
2489
  },
2417
2490
  "expect": {
@@ -2419,9 +2492,9 @@
2419
2492
  }
2420
2493
  },
2421
2494
  {
2422
- "id": "resolve-unbound",
2423
- "title": "no resolve answer named",
2424
- "why": "a decision must name the answer it was made from",
2495
+ "id": "purpose-key-decision",
2496
+ "title": "a decision signed by another published key than its resolve answer",
2497
+ "why": "keys are separated by purpose; both are published",
2425
2498
  "request": {
2426
2499
  "domain": "good.example",
2427
2500
  "action": "read",
@@ -2474,21 +2547,26 @@
2474
2547
  "report": "https://crawlcheck.io/r/suitefixture",
2475
2548
  "manifest_sha256": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
2476
2549
  },
2477
- "sha256": "5cb17bb16c0e5575318767d9c4a85b881a347c18e25976a90862e791061517c5",
2550
+ "resolve": {
2551
+ "sha256": "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
2552
+ "kid": "erziRf8en6nlChFs1zqtfOHoOyD2GyiXW98t3SYpLuk",
2553
+ "leaf_hash": "cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc"
2554
+ },
2555
+ "sha256": "50d3f6f29675be47ea95321cc053ded2994af04aa181340c8b7ec835b9e9ee71",
2478
2556
  "signature": {
2479
2557
  "v": 1,
2480
2558
  "alg": "Ed25519",
2481
- "kid": "xrog-5dLQHQuXmIsVCTFRFfPSzLVonFLRoWdifn1AmE",
2559
+ "kid": "r0X_XXpsP2-1P00GEj1tOmMIoTJ_w8H30oO6xo1NsRg",
2482
2560
  "over": "sha256",
2483
- "message": "crawlcheck-data-v1\n5cb17bb16c0e5575318767d9c4a85b881a347c18e25976a90862e791061517c5",
2484
- "sig": "iY3dfYatdpJrXKlAjNv_BQql91IT-1_DldVn06ZHXgq6cqnzW2J8pL4Ff_5-n-Ga1Y_QEbau58MrSqbBAxchAQ",
2561
+ "message": "crawlcheck-data-v1\n50d3f6f29675be47ea95321cc053ded2994af04aa181340c8b7ec835b9e9ee71",
2562
+ "sig": "sHDLgsAakNhhPTqSolIcKJkfTbxsMStIZo7kBVA-kZXZKXf6AgoXYo2mxTK9mtkEpdPo4gFruNOQHEhO-fCFCw",
2485
2563
  "signed_at": "2026-10-10T15:59:00.000Z",
2486
2564
  "key": {
2487
- "kid": "xrog-5dLQHQuXmIsVCTFRFfPSzLVonFLRoWdifn1AmE",
2565
+ "kid": "r0X_XXpsP2-1P00GEj1tOmMIoTJ_w8H30oO6xo1NsRg",
2488
2566
  "jwk": {
2489
2567
  "kty": "OKP",
2490
2568
  "crv": "Ed25519",
2491
- "x": "_EeVevPcJyuRWRCjFyG3-wRgmEdZmrn9tlBTvD31u8Q"
2569
+ "x": "DNDLnEKFsf8xmexG6JmEdHiq-O5Mn5Hn8p5wt3UvdiA"
2492
2570
  },
2493
2571
  "published_in": "the suite's directory"
2494
2572
  }
@@ -2496,13 +2574,13 @@
2496
2574
  }
2497
2575
  },
2498
2576
  "expect": {
2499
- "proceed": false
2577
+ "proceed": true
2500
2578
  }
2501
2579
  },
2502
2580
  {
2503
- "id": "wrong-kind",
2504
- "title": "a signed document of another kind",
2505
- "why": "only a decision receipt decides",
2581
+ "id": "resolve-key-foreign",
2582
+ "title": "a decision whose resolve answer names a key that is not published",
2583
+ "why": "every key a receipt leans on must be published",
2506
2584
  "request": {
2507
2585
  "domain": "good.example",
2508
2586
  "action": "read",
@@ -2514,7 +2592,7 @@
2514
2592
  "crawlcheck": {
2515
2593
  "status": 200,
2516
2594
  "body": {
2517
- "kind": "crawlcheck-resolve",
2595
+ "kind": "crawlcheck-decision",
2518
2596
  "v": 1,
2519
2597
  "decided_at": "2026-10-10T15:59:00.000Z",
2520
2598
  "expires_at": "2026-10-11T15:59:00.000Z",
@@ -2557,24 +2635,24 @@
2557
2635
  },
2558
2636
  "resolve": {
2559
2637
  "sha256": "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
2560
- "kid": "xrog-5dLQHQuXmIsVCTFRFfPSzLVonFLRoWdifn1AmE",
2638
+ "kid": "lWm4_2MC43LVz6Tu0m3NS1djTuvTr2mB3jPqfG_JGMo",
2561
2639
  "leaf_hash": "cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc"
2562
2640
  },
2563
- "sha256": "4d0cdf12eddf6dc14b7997eda8e9b5645105c2826a6fd8e5863cae562c83f122",
2641
+ "sha256": "b091fb3487bb0c5f5b37f94c8f20a4580a24260e85063a21c425e3ee063bef15",
2564
2642
  "signature": {
2565
2643
  "v": 1,
2566
2644
  "alg": "Ed25519",
2567
- "kid": "xrog-5dLQHQuXmIsVCTFRFfPSzLVonFLRoWdifn1AmE",
2645
+ "kid": "erziRf8en6nlChFs1zqtfOHoOyD2GyiXW98t3SYpLuk",
2568
2646
  "over": "sha256",
2569
- "message": "crawlcheck-data-v1\n4d0cdf12eddf6dc14b7997eda8e9b5645105c2826a6fd8e5863cae562c83f122",
2570
- "sig": "zdiF4ay6wGDX8I8BTE0KWlhPVyzWs6xvxYFQZwFJ6wTetVclirqVmuwz-SN6IzXo29LlQqYd_HDgQuoVDR_ABw",
2647
+ "message": "crawlcheck-data-v1\nb091fb3487bb0c5f5b37f94c8f20a4580a24260e85063a21c425e3ee063bef15",
2648
+ "sig": "RhJX-1rkMSwsULdAzo5s5QlnxlCQlOsj5fAX1OA5yajhERiUhnzBBtfrtqhZdJiLKCdHIBZcUa2N1N9j9lFzAQ",
2571
2649
  "signed_at": "2026-10-10T15:59:00.000Z",
2572
2650
  "key": {
2573
- "kid": "xrog-5dLQHQuXmIsVCTFRFfPSzLVonFLRoWdifn1AmE",
2651
+ "kid": "erziRf8en6nlChFs1zqtfOHoOyD2GyiXW98t3SYpLuk",
2574
2652
  "jwk": {
2575
2653
  "kty": "OKP",
2576
2654
  "crv": "Ed25519",
2577
- "x": "_EeVevPcJyuRWRCjFyG3-wRgmEdZmrn9tlBTvD31u8Q"
2655
+ "x": "wS76C0bWq0ejgwsAlHq0imuG2HoW15ZeLhw9icbKbiA"
2578
2656
  },
2579
2657
  "published_in": "the suite's directory"
2580
2658
  }
@@ -2586,9 +2664,9 @@
2586
2664
  }
2587
2665
  },
2588
2666
  {
2589
- "id": "wrong-version",
2590
- "title": "a decision of an unknown version",
2591
- "why": "",
2667
+ "id": "tampered",
2668
+ "title": "a block receipt edited to allow",
2669
+ "why": "the digest no longer matches",
2592
2670
  "request": {
2593
2671
  "domain": "good.example",
2594
2672
  "action": "read",
@@ -2601,7 +2679,7 @@
2601
2679
  "status": 200,
2602
2680
  "body": {
2603
2681
  "kind": "crawlcheck-decision",
2604
- "v": 2,
2682
+ "v": 1,
2605
2683
  "decided_at": "2026-10-10T15:59:00.000Z",
2606
2684
  "expires_at": "2026-10-11T15:59:00.000Z",
2607
2685
  "clock_skew_s": 300,
@@ -2624,7 +2702,7 @@
2624
2702
  "rules_sha256": "18dd5636e0896692ab518050cb401744edea2e6f1086dff94fead314959bdc3e"
2625
2703
  },
2626
2704
  "decision": "allow",
2627
- "base_decision": "allow",
2705
+ "base_decision": "block",
2628
2706
  "human_confirmation_required": false,
2629
2707
  "reason_codes": [
2630
2708
  "resolve.actions.read"
@@ -2632,7 +2710,7 @@
2632
2710
  "steps": [
2633
2711
  {
2634
2712
  "rule": "resolve.actions.read",
2635
- "effect": "allow",
2713
+ "effect": "block",
2636
2714
  "why": "suite fixture"
2637
2715
  }
2638
2716
  ],
@@ -2643,24 +2721,24 @@
2643
2721
  },
2644
2722
  "resolve": {
2645
2723
  "sha256": "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
2646
- "kid": "xrog-5dLQHQuXmIsVCTFRFfPSzLVonFLRoWdifn1AmE",
2724
+ "kid": "erziRf8en6nlChFs1zqtfOHoOyD2GyiXW98t3SYpLuk",
2647
2725
  "leaf_hash": "cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc"
2648
2726
  },
2649
- "sha256": "6f7d751e54530891cae051857199c1318e01ac672be9688b15d3ac8f4d2bbc67",
2727
+ "sha256": "06d6327467764d8a0d4fca6aae52adbff928d7583b040c59d4ad072849f25390",
2650
2728
  "signature": {
2651
2729
  "v": 1,
2652
2730
  "alg": "Ed25519",
2653
- "kid": "xrog-5dLQHQuXmIsVCTFRFfPSzLVonFLRoWdifn1AmE",
2731
+ "kid": "erziRf8en6nlChFs1zqtfOHoOyD2GyiXW98t3SYpLuk",
2654
2732
  "over": "sha256",
2655
- "message": "crawlcheck-data-v1\n6f7d751e54530891cae051857199c1318e01ac672be9688b15d3ac8f4d2bbc67",
2656
- "sig": "BPPmNlTUjYlrHFU3ibHC250cynzfS9KSTa5tkTs-2-zGMtRXKaTfyd_Iejed1E55DsDGoiq-21xy-se9-g67Dw",
2733
+ "message": "crawlcheck-data-v1\n06d6327467764d8a0d4fca6aae52adbff928d7583b040c59d4ad072849f25390",
2734
+ "sig": "y0HF72RVSBJIJBfHyIbPLjnQ-tEZ2I7h35JEsfvOZxEPJ0oNAieEUy1BpIPryGS2vy7yRzJbG8njlYo77ZKnCA",
2657
2735
  "signed_at": "2026-10-10T15:59:00.000Z",
2658
2736
  "key": {
2659
- "kid": "xrog-5dLQHQuXmIsVCTFRFfPSzLVonFLRoWdifn1AmE",
2737
+ "kid": "erziRf8en6nlChFs1zqtfOHoOyD2GyiXW98t3SYpLuk",
2660
2738
  "jwk": {
2661
2739
  "kty": "OKP",
2662
2740
  "crv": "Ed25519",
2663
- "x": "_EeVevPcJyuRWRCjFyG3-wRgmEdZmrn9tlBTvD31u8Q"
2741
+ "x": "wS76C0bWq0ejgwsAlHq0imuG2HoW15ZeLhw9icbKbiA"
2664
2742
  },
2665
2743
  "published_in": "the suite's directory"
2666
2744
  }
@@ -2672,9 +2750,9 @@
2672
2750
  }
2673
2751
  },
2674
2752
  {
2675
- "id": "malformed-empty",
2676
- "title": "an empty object",
2677
- "why": "",
2753
+ "id": "tampered-unsigned-field",
2754
+ "title": "a field added after signing",
2755
+ "why": "every field is signed",
2678
2756
  "request": {
2679
2757
  "domain": "good.example",
2680
2758
  "action": "read",
@@ -2685,16 +2763,83 @@
2685
2763
  },
2686
2764
  "crawlcheck": {
2687
2765
  "status": 200,
2688
- "body": {}
2766
+ "body": {
2767
+ "kind": "crawlcheck-decision",
2768
+ "v": 1,
2769
+ "decided_at": "2026-10-10T15:59:00.000Z",
2770
+ "expires_at": "2026-10-11T15:59:00.000Z",
2771
+ "clock_skew_s": 300,
2772
+ "nonce": "ccguard-acceptance-0001",
2773
+ "domain": "good.example",
2774
+ "action": "read",
2775
+ "agent": null,
2776
+ "template": null,
2777
+ "policy": {
2778
+ "max_age_hours": null,
2779
+ "on_warn": "warn",
2780
+ "require_entity": false,
2781
+ "human_approval": [],
2782
+ "allow": [],
2783
+ "deny": []
2784
+ },
2785
+ "policy_id": null,
2786
+ "engine": {
2787
+ "version": "pf4",
2788
+ "rules_sha256": "18dd5636e0896692ab518050cb401744edea2e6f1086dff94fead314959bdc3e"
2789
+ },
2790
+ "decision": "allow",
2791
+ "base_decision": "allow",
2792
+ "human_confirmation_required": false,
2793
+ "reason_codes": [
2794
+ "resolve.actions.read"
2795
+ ],
2796
+ "steps": [
2797
+ {
2798
+ "rule": "resolve.actions.read",
2799
+ "effect": "allow",
2800
+ "why": "suite fixture"
2801
+ }
2802
+ ],
2803
+ "alternatives": [],
2804
+ "evidence": {
2805
+ "report": "https://crawlcheck.io/r/suitefixture",
2806
+ "manifest_sha256": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
2807
+ },
2808
+ "resolve": {
2809
+ "sha256": "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
2810
+ "kid": "erziRf8en6nlChFs1zqtfOHoOyD2GyiXW98t3SYpLuk",
2811
+ "leaf_hash": "cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc"
2812
+ },
2813
+ "sha256": "50d3f6f29675be47ea95321cc053ded2994af04aa181340c8b7ec835b9e9ee71",
2814
+ "signature": {
2815
+ "v": 1,
2816
+ "alg": "Ed25519",
2817
+ "kid": "erziRf8en6nlChFs1zqtfOHoOyD2GyiXW98t3SYpLuk",
2818
+ "over": "sha256",
2819
+ "message": "crawlcheck-data-v1\n50d3f6f29675be47ea95321cc053ded2994af04aa181340c8b7ec835b9e9ee71",
2820
+ "sig": "zyjvcHeLxg2Cbpdqv5Pjkwg1ABGD8WQaLyeKwFf59fdtJEbYgvaYIdnYkebB3BVSTiPHRlisr85dvTWH0JF3Dg",
2821
+ "signed_at": "2026-10-10T15:59:00.000Z",
2822
+ "key": {
2823
+ "kid": "erziRf8en6nlChFs1zqtfOHoOyD2GyiXW98t3SYpLuk",
2824
+ "jwk": {
2825
+ "kty": "OKP",
2826
+ "crv": "Ed25519",
2827
+ "x": "wS76C0bWq0ejgwsAlHq0imuG2HoW15ZeLhw9icbKbiA"
2828
+ },
2829
+ "published_in": "the suite's directory"
2830
+ }
2831
+ },
2832
+ "x_note": "added later"
2833
+ }
2689
2834
  },
2690
2835
  "expect": {
2691
2836
  "proceed": false
2692
2837
  }
2693
2838
  },
2694
2839
  {
2695
- "id": "malformed-array",
2696
- "title": "a JSON array",
2697
- "why": "",
2840
+ "id": "unknown-signed-field",
2841
+ "title": "an unknown field that was signed",
2842
+ "why": "forward compatible: ignore unknown fields, but only signed ones",
2698
2843
  "request": {
2699
2844
  "domain": "good.example",
2700
2845
  "action": "read",
@@ -2705,10 +2850,612 @@
2705
2850
  },
2706
2851
  "crawlcheck": {
2707
2852
  "status": 200,
2708
- "body": []
2853
+ "body": {
2854
+ "kind": "crawlcheck-decision",
2855
+ "v": 1,
2856
+ "decided_at": "2026-10-10T15:59:00.000Z",
2857
+ "expires_at": "2026-10-11T15:59:00.000Z",
2858
+ "clock_skew_s": 300,
2859
+ "nonce": "ccguard-acceptance-0001",
2860
+ "domain": "good.example",
2861
+ "action": "read",
2862
+ "agent": null,
2863
+ "template": null,
2864
+ "policy": {
2865
+ "max_age_hours": null,
2866
+ "on_warn": "warn",
2867
+ "require_entity": false,
2868
+ "human_approval": [],
2869
+ "allow": [],
2870
+ "deny": []
2871
+ },
2872
+ "policy_id": null,
2873
+ "engine": {
2874
+ "version": "pf4",
2875
+ "rules_sha256": "18dd5636e0896692ab518050cb401744edea2e6f1086dff94fead314959bdc3e"
2876
+ },
2877
+ "decision": "allow",
2878
+ "base_decision": "allow",
2879
+ "human_confirmation_required": false,
2880
+ "reason_codes": [
2881
+ "resolve.actions.read"
2882
+ ],
2883
+ "steps": [
2884
+ {
2885
+ "rule": "resolve.actions.read",
2886
+ "effect": "allow",
2887
+ "why": "suite fixture"
2888
+ }
2889
+ ],
2890
+ "alternatives": [],
2891
+ "evidence": {
2892
+ "report": "https://crawlcheck.io/r/suitefixture",
2893
+ "manifest_sha256": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
2894
+ },
2895
+ "resolve": {
2896
+ "sha256": "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
2897
+ "kid": "erziRf8en6nlChFs1zqtfOHoOyD2GyiXW98t3SYpLuk",
2898
+ "leaf_hash": "cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc"
2899
+ },
2900
+ "x_future_field": {
2901
+ "a": 1
2902
+ },
2903
+ "sha256": "62507775227f0ba54d1d36a0095d8db91104d855bc7ecfb4717ce39ce4a39894",
2904
+ "signature": {
2905
+ "v": 1,
2906
+ "alg": "Ed25519",
2907
+ "kid": "erziRf8en6nlChFs1zqtfOHoOyD2GyiXW98t3SYpLuk",
2908
+ "over": "sha256",
2909
+ "message": "crawlcheck-data-v1\n62507775227f0ba54d1d36a0095d8db91104d855bc7ecfb4717ce39ce4a39894",
2910
+ "sig": "RglYeWlQyjv1-hIenSmdsnMayrIMnazoHh27DfimfKdwKOA2mudQqmqGSEPMuNxuKLlAOr8vTaQj83an69dSDg",
2911
+ "signed_at": "2026-10-10T15:59:00.000Z",
2912
+ "key": {
2913
+ "kid": "erziRf8en6nlChFs1zqtfOHoOyD2GyiXW98t3SYpLuk",
2914
+ "jwk": {
2915
+ "kty": "OKP",
2916
+ "crv": "Ed25519",
2917
+ "x": "wS76C0bWq0ejgwsAlHq0imuG2HoW15ZeLhw9icbKbiA"
2918
+ },
2919
+ "published_in": "the suite's directory"
2920
+ }
2921
+ }
2922
+ }
2709
2923
  },
2710
2924
  "expect": {
2711
- "proceed": false
2925
+ "proceed": true
2926
+ }
2927
+ },
2928
+ {
2929
+ "id": "foreign-key",
2930
+ "title": "a valid signature by a key CrawlCheck does not publish",
2931
+ "why": "integrity is not trust",
2932
+ "request": {
2933
+ "domain": "good.example",
2934
+ "action": "read",
2935
+ "allow_warn": false,
2936
+ "confirm": null,
2937
+ "nonce": "ccguard-acceptance-0001",
2938
+ "now": "2026-10-10T16:00:00.000Z"
2939
+ },
2940
+ "crawlcheck": {
2941
+ "status": 200,
2942
+ "body": {
2943
+ "kind": "crawlcheck-decision",
2944
+ "v": 1,
2945
+ "decided_at": "2026-10-10T15:59:00.000Z",
2946
+ "expires_at": "2026-10-11T15:59:00.000Z",
2947
+ "clock_skew_s": 300,
2948
+ "nonce": "ccguard-acceptance-0001",
2949
+ "domain": "good.example",
2950
+ "action": "read",
2951
+ "agent": null,
2952
+ "template": null,
2953
+ "policy": {
2954
+ "max_age_hours": null,
2955
+ "on_warn": "warn",
2956
+ "require_entity": false,
2957
+ "human_approval": [],
2958
+ "allow": [],
2959
+ "deny": []
2960
+ },
2961
+ "policy_id": null,
2962
+ "engine": {
2963
+ "version": "pf4",
2964
+ "rules_sha256": "18dd5636e0896692ab518050cb401744edea2e6f1086dff94fead314959bdc3e"
2965
+ },
2966
+ "decision": "allow",
2967
+ "base_decision": "allow",
2968
+ "human_confirmation_required": false,
2969
+ "reason_codes": [
2970
+ "resolve.actions.read"
2971
+ ],
2972
+ "steps": [
2973
+ {
2974
+ "rule": "resolve.actions.read",
2975
+ "effect": "allow",
2976
+ "why": "suite fixture"
2977
+ }
2978
+ ],
2979
+ "alternatives": [],
2980
+ "evidence": {
2981
+ "report": "https://crawlcheck.io/r/suitefixture",
2982
+ "manifest_sha256": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
2983
+ },
2984
+ "resolve": {
2985
+ "sha256": "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
2986
+ "kid": "erziRf8en6nlChFs1zqtfOHoOyD2GyiXW98t3SYpLuk",
2987
+ "leaf_hash": "cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc"
2988
+ },
2989
+ "sha256": "50d3f6f29675be47ea95321cc053ded2994af04aa181340c8b7ec835b9e9ee71",
2990
+ "signature": {
2991
+ "v": 1,
2992
+ "alg": "Ed25519",
2993
+ "kid": "lWm4_2MC43LVz6Tu0m3NS1djTuvTr2mB3jPqfG_JGMo",
2994
+ "over": "sha256",
2995
+ "message": "crawlcheck-data-v1\n50d3f6f29675be47ea95321cc053ded2994af04aa181340c8b7ec835b9e9ee71",
2996
+ "sig": "T4IPP7fZwfvgeTiOEP6q_U-mGZ7GgKkVEKog0X5rl44uT5gR-GNkDngN4zV1zq_xJvBuUeUBwhm1xAyyoFGRDg",
2997
+ "signed_at": "2026-10-10T15:59:00.000Z",
2998
+ "key": {
2999
+ "kid": "lWm4_2MC43LVz6Tu0m3NS1djTuvTr2mB3jPqfG_JGMo",
3000
+ "jwk": {
3001
+ "kty": "OKP",
3002
+ "crv": "Ed25519",
3003
+ "x": "_5OBkFn4qsNKzUuLpq0nzN3MRyZOXy5YxbOPrxjNtMw"
3004
+ },
3005
+ "published_in": "the suite's directory"
3006
+ }
3007
+ }
3008
+ }
3009
+ },
3010
+ "expect": {
3011
+ "proceed": false
3012
+ }
3013
+ },
3014
+ {
3015
+ "id": "kid-mismatch",
3016
+ "title": "a published kid on a signature by another key",
3017
+ "why": "the key id must be the key's thumbprint",
3018
+ "request": {
3019
+ "domain": "good.example",
3020
+ "action": "read",
3021
+ "allow_warn": false,
3022
+ "confirm": null,
3023
+ "nonce": "ccguard-acceptance-0001",
3024
+ "now": "2026-10-10T16:00:00.000Z"
3025
+ },
3026
+ "crawlcheck": {
3027
+ "status": 200,
3028
+ "body": {
3029
+ "kind": "crawlcheck-decision",
3030
+ "v": 1,
3031
+ "decided_at": "2026-10-10T15:59:00.000Z",
3032
+ "expires_at": "2026-10-11T15:59:00.000Z",
3033
+ "clock_skew_s": 300,
3034
+ "nonce": "ccguard-acceptance-0001",
3035
+ "domain": "good.example",
3036
+ "action": "read",
3037
+ "agent": null,
3038
+ "template": null,
3039
+ "policy": {
3040
+ "max_age_hours": null,
3041
+ "on_warn": "warn",
3042
+ "require_entity": false,
3043
+ "human_approval": [],
3044
+ "allow": [],
3045
+ "deny": []
3046
+ },
3047
+ "policy_id": null,
3048
+ "engine": {
3049
+ "version": "pf4",
3050
+ "rules_sha256": "18dd5636e0896692ab518050cb401744edea2e6f1086dff94fead314959bdc3e"
3051
+ },
3052
+ "decision": "allow",
3053
+ "base_decision": "allow",
3054
+ "human_confirmation_required": false,
3055
+ "reason_codes": [
3056
+ "resolve.actions.read"
3057
+ ],
3058
+ "steps": [
3059
+ {
3060
+ "rule": "resolve.actions.read",
3061
+ "effect": "allow",
3062
+ "why": "suite fixture"
3063
+ }
3064
+ ],
3065
+ "alternatives": [],
3066
+ "evidence": {
3067
+ "report": "https://crawlcheck.io/r/suitefixture",
3068
+ "manifest_sha256": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
3069
+ },
3070
+ "resolve": {
3071
+ "sha256": "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
3072
+ "kid": "erziRf8en6nlChFs1zqtfOHoOyD2GyiXW98t3SYpLuk",
3073
+ "leaf_hash": "cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc"
3074
+ },
3075
+ "sha256": "50d3f6f29675be47ea95321cc053ded2994af04aa181340c8b7ec835b9e9ee71",
3076
+ "signature": {
3077
+ "v": 1,
3078
+ "alg": "Ed25519",
3079
+ "kid": "erziRf8en6nlChFs1zqtfOHoOyD2GyiXW98t3SYpLuk",
3080
+ "over": "sha256",
3081
+ "message": "crawlcheck-data-v1\n50d3f6f29675be47ea95321cc053ded2994af04aa181340c8b7ec835b9e9ee71",
3082
+ "sig": "T4IPP7fZwfvgeTiOEP6q_U-mGZ7GgKkVEKog0X5rl44uT5gR-GNkDngN4zV1zq_xJvBuUeUBwhm1xAyyoFGRDg",
3083
+ "signed_at": "2026-10-10T15:59:00.000Z",
3084
+ "key": {
3085
+ "kid": "erziRf8en6nlChFs1zqtfOHoOyD2GyiXW98t3SYpLuk",
3086
+ "jwk": {
3087
+ "kty": "OKP",
3088
+ "crv": "Ed25519",
3089
+ "x": "_5OBkFn4qsNKzUuLpq0nzN3MRyZOXy5YxbOPrxjNtMw"
3090
+ },
3091
+ "published_in": "the suite's directory"
3092
+ }
3093
+ }
3094
+ }
3095
+ },
3096
+ "expect": {
3097
+ "proceed": false
3098
+ }
3099
+ },
3100
+ {
3101
+ "id": "unsigned",
3102
+ "title": "no signature",
3103
+ "why": "",
3104
+ "request": {
3105
+ "domain": "good.example",
3106
+ "action": "read",
3107
+ "allow_warn": false,
3108
+ "confirm": null,
3109
+ "nonce": "ccguard-acceptance-0001",
3110
+ "now": "2026-10-10T16:00:00.000Z"
3111
+ },
3112
+ "crawlcheck": {
3113
+ "status": 200,
3114
+ "body": {
3115
+ "kind": "crawlcheck-decision",
3116
+ "v": 1,
3117
+ "decided_at": "2026-10-10T15:59:00.000Z",
3118
+ "expires_at": "2026-10-11T15:59:00.000Z",
3119
+ "clock_skew_s": 300,
3120
+ "nonce": "ccguard-acceptance-0001",
3121
+ "domain": "good.example",
3122
+ "action": "read",
3123
+ "agent": null,
3124
+ "template": null,
3125
+ "policy": {
3126
+ "max_age_hours": null,
3127
+ "on_warn": "warn",
3128
+ "require_entity": false,
3129
+ "human_approval": [],
3130
+ "allow": [],
3131
+ "deny": []
3132
+ },
3133
+ "policy_id": null,
3134
+ "engine": {
3135
+ "version": "pf4",
3136
+ "rules_sha256": "18dd5636e0896692ab518050cb401744edea2e6f1086dff94fead314959bdc3e"
3137
+ },
3138
+ "decision": "allow",
3139
+ "base_decision": "allow",
3140
+ "human_confirmation_required": false,
3141
+ "reason_codes": [
3142
+ "resolve.actions.read"
3143
+ ],
3144
+ "steps": [
3145
+ {
3146
+ "rule": "resolve.actions.read",
3147
+ "effect": "allow",
3148
+ "why": "suite fixture"
3149
+ }
3150
+ ],
3151
+ "alternatives": [],
3152
+ "evidence": {
3153
+ "report": "https://crawlcheck.io/r/suitefixture",
3154
+ "manifest_sha256": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
3155
+ },
3156
+ "resolve": {
3157
+ "sha256": "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
3158
+ "kid": "erziRf8en6nlChFs1zqtfOHoOyD2GyiXW98t3SYpLuk",
3159
+ "leaf_hash": "cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc"
3160
+ },
3161
+ "sha256": "50d3f6f29675be47ea95321cc053ded2994af04aa181340c8b7ec835b9e9ee71"
3162
+ }
3163
+ },
3164
+ "expect": {
3165
+ "proceed": false
3166
+ }
3167
+ },
3168
+ {
3169
+ "id": "resolve-unbound",
3170
+ "title": "no resolve answer named",
3171
+ "why": "a decision must name the answer it was made from",
3172
+ "request": {
3173
+ "domain": "good.example",
3174
+ "action": "read",
3175
+ "allow_warn": false,
3176
+ "confirm": null,
3177
+ "nonce": "ccguard-acceptance-0001",
3178
+ "now": "2026-10-10T16:00:00.000Z"
3179
+ },
3180
+ "crawlcheck": {
3181
+ "status": 200,
3182
+ "body": {
3183
+ "kind": "crawlcheck-decision",
3184
+ "v": 1,
3185
+ "decided_at": "2026-10-10T15:59:00.000Z",
3186
+ "expires_at": "2026-10-11T15:59:00.000Z",
3187
+ "clock_skew_s": 300,
3188
+ "nonce": "ccguard-acceptance-0001",
3189
+ "domain": "good.example",
3190
+ "action": "read",
3191
+ "agent": null,
3192
+ "template": null,
3193
+ "policy": {
3194
+ "max_age_hours": null,
3195
+ "on_warn": "warn",
3196
+ "require_entity": false,
3197
+ "human_approval": [],
3198
+ "allow": [],
3199
+ "deny": []
3200
+ },
3201
+ "policy_id": null,
3202
+ "engine": {
3203
+ "version": "pf4",
3204
+ "rules_sha256": "18dd5636e0896692ab518050cb401744edea2e6f1086dff94fead314959bdc3e"
3205
+ },
3206
+ "decision": "allow",
3207
+ "base_decision": "allow",
3208
+ "human_confirmation_required": false,
3209
+ "reason_codes": [
3210
+ "resolve.actions.read"
3211
+ ],
3212
+ "steps": [
3213
+ {
3214
+ "rule": "resolve.actions.read",
3215
+ "effect": "allow",
3216
+ "why": "suite fixture"
3217
+ }
3218
+ ],
3219
+ "alternatives": [],
3220
+ "evidence": {
3221
+ "report": "https://crawlcheck.io/r/suitefixture",
3222
+ "manifest_sha256": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
3223
+ },
3224
+ "sha256": "5cb17bb16c0e5575318767d9c4a85b881a347c18e25976a90862e791061517c5",
3225
+ "signature": {
3226
+ "v": 1,
3227
+ "alg": "Ed25519",
3228
+ "kid": "erziRf8en6nlChFs1zqtfOHoOyD2GyiXW98t3SYpLuk",
3229
+ "over": "sha256",
3230
+ "message": "crawlcheck-data-v1\n5cb17bb16c0e5575318767d9c4a85b881a347c18e25976a90862e791061517c5",
3231
+ "sig": "SiVwNmG7Uzm-PREUOH82JUadu0n7YDWR74Rj5yHvK5H9eCiFpXPS1SHJmbPN9rGAuL-osYqXlJOUEQa1v414Dg",
3232
+ "signed_at": "2026-10-10T15:59:00.000Z",
3233
+ "key": {
3234
+ "kid": "erziRf8en6nlChFs1zqtfOHoOyD2GyiXW98t3SYpLuk",
3235
+ "jwk": {
3236
+ "kty": "OKP",
3237
+ "crv": "Ed25519",
3238
+ "x": "wS76C0bWq0ejgwsAlHq0imuG2HoW15ZeLhw9icbKbiA"
3239
+ },
3240
+ "published_in": "the suite's directory"
3241
+ }
3242
+ }
3243
+ }
3244
+ },
3245
+ "expect": {
3246
+ "proceed": false
3247
+ }
3248
+ },
3249
+ {
3250
+ "id": "wrong-kind",
3251
+ "title": "a signed document of another kind",
3252
+ "why": "only a decision receipt decides",
3253
+ "request": {
3254
+ "domain": "good.example",
3255
+ "action": "read",
3256
+ "allow_warn": false,
3257
+ "confirm": null,
3258
+ "nonce": "ccguard-acceptance-0001",
3259
+ "now": "2026-10-10T16:00:00.000Z"
3260
+ },
3261
+ "crawlcheck": {
3262
+ "status": 200,
3263
+ "body": {
3264
+ "kind": "crawlcheck-resolve",
3265
+ "v": 1,
3266
+ "decided_at": "2026-10-10T15:59:00.000Z",
3267
+ "expires_at": "2026-10-11T15:59:00.000Z",
3268
+ "clock_skew_s": 300,
3269
+ "nonce": "ccguard-acceptance-0001",
3270
+ "domain": "good.example",
3271
+ "action": "read",
3272
+ "agent": null,
3273
+ "template": null,
3274
+ "policy": {
3275
+ "max_age_hours": null,
3276
+ "on_warn": "warn",
3277
+ "require_entity": false,
3278
+ "human_approval": [],
3279
+ "allow": [],
3280
+ "deny": []
3281
+ },
3282
+ "policy_id": null,
3283
+ "engine": {
3284
+ "version": "pf4",
3285
+ "rules_sha256": "18dd5636e0896692ab518050cb401744edea2e6f1086dff94fead314959bdc3e"
3286
+ },
3287
+ "decision": "allow",
3288
+ "base_decision": "allow",
3289
+ "human_confirmation_required": false,
3290
+ "reason_codes": [
3291
+ "resolve.actions.read"
3292
+ ],
3293
+ "steps": [
3294
+ {
3295
+ "rule": "resolve.actions.read",
3296
+ "effect": "allow",
3297
+ "why": "suite fixture"
3298
+ }
3299
+ ],
3300
+ "alternatives": [],
3301
+ "evidence": {
3302
+ "report": "https://crawlcheck.io/r/suitefixture",
3303
+ "manifest_sha256": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
3304
+ },
3305
+ "resolve": {
3306
+ "sha256": "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
3307
+ "kid": "erziRf8en6nlChFs1zqtfOHoOyD2GyiXW98t3SYpLuk",
3308
+ "leaf_hash": "cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc"
3309
+ },
3310
+ "sha256": "fbdf40791795eb385e1800a08d8b988f708e7deb3dae7801da0ac966755c6d85",
3311
+ "signature": {
3312
+ "v": 1,
3313
+ "alg": "Ed25519",
3314
+ "kid": "erziRf8en6nlChFs1zqtfOHoOyD2GyiXW98t3SYpLuk",
3315
+ "over": "sha256",
3316
+ "message": "crawlcheck-data-v1\nfbdf40791795eb385e1800a08d8b988f708e7deb3dae7801da0ac966755c6d85",
3317
+ "sig": "s8eIvJCOeEz3M2DlNA3HIyuyOr6SUkYmWgUv3JMguO6rP-ykCPRopn_Cs12aLCcxfsWYzNoKRcvNhT9XmPPECA",
3318
+ "signed_at": "2026-10-10T15:59:00.000Z",
3319
+ "key": {
3320
+ "kid": "erziRf8en6nlChFs1zqtfOHoOyD2GyiXW98t3SYpLuk",
3321
+ "jwk": {
3322
+ "kty": "OKP",
3323
+ "crv": "Ed25519",
3324
+ "x": "wS76C0bWq0ejgwsAlHq0imuG2HoW15ZeLhw9icbKbiA"
3325
+ },
3326
+ "published_in": "the suite's directory"
3327
+ }
3328
+ }
3329
+ }
3330
+ },
3331
+ "expect": {
3332
+ "proceed": false
3333
+ }
3334
+ },
3335
+ {
3336
+ "id": "wrong-version",
3337
+ "title": "a decision of an unknown version",
3338
+ "why": "",
3339
+ "request": {
3340
+ "domain": "good.example",
3341
+ "action": "read",
3342
+ "allow_warn": false,
3343
+ "confirm": null,
3344
+ "nonce": "ccguard-acceptance-0001",
3345
+ "now": "2026-10-10T16:00:00.000Z"
3346
+ },
3347
+ "crawlcheck": {
3348
+ "status": 200,
3349
+ "body": {
3350
+ "kind": "crawlcheck-decision",
3351
+ "v": 2,
3352
+ "decided_at": "2026-10-10T15:59:00.000Z",
3353
+ "expires_at": "2026-10-11T15:59:00.000Z",
3354
+ "clock_skew_s": 300,
3355
+ "nonce": "ccguard-acceptance-0001",
3356
+ "domain": "good.example",
3357
+ "action": "read",
3358
+ "agent": null,
3359
+ "template": null,
3360
+ "policy": {
3361
+ "max_age_hours": null,
3362
+ "on_warn": "warn",
3363
+ "require_entity": false,
3364
+ "human_approval": [],
3365
+ "allow": [],
3366
+ "deny": []
3367
+ },
3368
+ "policy_id": null,
3369
+ "engine": {
3370
+ "version": "pf4",
3371
+ "rules_sha256": "18dd5636e0896692ab518050cb401744edea2e6f1086dff94fead314959bdc3e"
3372
+ },
3373
+ "decision": "allow",
3374
+ "base_decision": "allow",
3375
+ "human_confirmation_required": false,
3376
+ "reason_codes": [
3377
+ "resolve.actions.read"
3378
+ ],
3379
+ "steps": [
3380
+ {
3381
+ "rule": "resolve.actions.read",
3382
+ "effect": "allow",
3383
+ "why": "suite fixture"
3384
+ }
3385
+ ],
3386
+ "alternatives": [],
3387
+ "evidence": {
3388
+ "report": "https://crawlcheck.io/r/suitefixture",
3389
+ "manifest_sha256": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
3390
+ },
3391
+ "resolve": {
3392
+ "sha256": "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
3393
+ "kid": "erziRf8en6nlChFs1zqtfOHoOyD2GyiXW98t3SYpLuk",
3394
+ "leaf_hash": "cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc"
3395
+ },
3396
+ "sha256": "f4eb2abc4faef0916b216d236eea1bcb63100f79c0da2d1876cf4912dbc4189b",
3397
+ "signature": {
3398
+ "v": 1,
3399
+ "alg": "Ed25519",
3400
+ "kid": "erziRf8en6nlChFs1zqtfOHoOyD2GyiXW98t3SYpLuk",
3401
+ "over": "sha256",
3402
+ "message": "crawlcheck-data-v1\nf4eb2abc4faef0916b216d236eea1bcb63100f79c0da2d1876cf4912dbc4189b",
3403
+ "sig": "bcS8ydxfvDRCctWbQvyNi8m6TSxokqTEBK1kyFQPUgL8xNOw0Gyy9vfUlw1s-vuX8mESZHMqK7GxNsd3XxVoCA",
3404
+ "signed_at": "2026-10-10T15:59:00.000Z",
3405
+ "key": {
3406
+ "kid": "erziRf8en6nlChFs1zqtfOHoOyD2GyiXW98t3SYpLuk",
3407
+ "jwk": {
3408
+ "kty": "OKP",
3409
+ "crv": "Ed25519",
3410
+ "x": "wS76C0bWq0ejgwsAlHq0imuG2HoW15ZeLhw9icbKbiA"
3411
+ },
3412
+ "published_in": "the suite's directory"
3413
+ }
3414
+ }
3415
+ }
3416
+ },
3417
+ "expect": {
3418
+ "proceed": false
3419
+ }
3420
+ },
3421
+ {
3422
+ "id": "malformed-empty",
3423
+ "title": "an empty object",
3424
+ "why": "",
3425
+ "request": {
3426
+ "domain": "good.example",
3427
+ "action": "read",
3428
+ "allow_warn": false,
3429
+ "confirm": null,
3430
+ "nonce": "ccguard-acceptance-0001",
3431
+ "now": "2026-10-10T16:00:00.000Z"
3432
+ },
3433
+ "crawlcheck": {
3434
+ "status": 200,
3435
+ "body": {}
3436
+ },
3437
+ "expect": {
3438
+ "proceed": false
3439
+ }
3440
+ },
3441
+ {
3442
+ "id": "malformed-array",
3443
+ "title": "a JSON array",
3444
+ "why": "",
3445
+ "request": {
3446
+ "domain": "good.example",
3447
+ "action": "read",
3448
+ "allow_warn": false,
3449
+ "confirm": null,
3450
+ "nonce": "ccguard-acceptance-0001",
3451
+ "now": "2026-10-10T16:00:00.000Z"
3452
+ },
3453
+ "crawlcheck": {
3454
+ "status": 200,
3455
+ "body": []
3456
+ },
3457
+ "expect": {
3458
+ "proceed": false
2712
3459
  }
2713
3460
  },
2714
3461
  {
@@ -2783,19 +3530,123 @@
2783
3530
  "nonce": "ccguard-acceptance-0001",
2784
3531
  "now": "2026-10-10T16:00:00.000Z"
2785
3532
  },
2786
- "crawlcheck": {
2787
- "unreachable": true
3533
+ "crawlcheck": {
3534
+ "unreachable": true
3535
+ },
3536
+ "expect": {
3537
+ "proceed": false
3538
+ }
3539
+ },
3540
+ {
3541
+ "id": "fetch-ok",
3542
+ "title": "a guarded fetch with no redirect",
3543
+ "why": "positive control",
3544
+ "request": {
3545
+ "url": "https://good.example/page",
3546
+ "action": "read",
3547
+ "allow_warn": false,
3548
+ "confirm": null,
3549
+ "nonce": "ccguard-acceptance-0001",
3550
+ "now": "2026-10-10T16:00:00.000Z",
3551
+ "max_hops": 10
3552
+ },
3553
+ "crawlcheck": {
3554
+ "by_op": {
3555
+ "GET https://good.example/page": {
3556
+ "kind": "crawlcheck-decision",
3557
+ "v": 1,
3558
+ "decided_at": "2026-10-10T15:59:00.000Z",
3559
+ "expires_at": "2026-10-11T15:59:00.000Z",
3560
+ "clock_skew_s": 300,
3561
+ "nonce": "ccguard-acceptance-0001",
3562
+ "domain": "good.example",
3563
+ "action": "read",
3564
+ "agent": null,
3565
+ "template": null,
3566
+ "policy": {
3567
+ "max_age_hours": null,
3568
+ "on_warn": "warn",
3569
+ "require_entity": false,
3570
+ "human_approval": [],
3571
+ "allow": [],
3572
+ "deny": []
3573
+ },
3574
+ "policy_id": null,
3575
+ "engine": {
3576
+ "version": "pf4",
3577
+ "rules_sha256": "18dd5636e0896692ab518050cb401744edea2e6f1086dff94fead314959bdc3e"
3578
+ },
3579
+ "decision": "allow",
3580
+ "base_decision": "allow",
3581
+ "human_confirmation_required": false,
3582
+ "reason_codes": [
3583
+ "resolve.actions.read"
3584
+ ],
3585
+ "steps": [
3586
+ {
3587
+ "rule": "resolve.actions.read",
3588
+ "effect": "allow",
3589
+ "why": "suite fixture"
3590
+ }
3591
+ ],
3592
+ "alternatives": [],
3593
+ "evidence": {
3594
+ "report": "https://crawlcheck.io/r/suitefixture",
3595
+ "manifest_sha256": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
3596
+ },
3597
+ "resolve": {
3598
+ "sha256": "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
3599
+ "kid": "erziRf8en6nlChFs1zqtfOHoOyD2GyiXW98t3SYpLuk",
3600
+ "leaf_hash": "cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc"
3601
+ },
3602
+ "operation": {
3603
+ "method": "GET",
3604
+ "url": "https://good.example/page"
3605
+ },
3606
+ "sha256": "ffd4756d7562c0a72d2fb88310727c57ed43c7bbcd3f9992fd08fcd09a24539d",
3607
+ "signature": {
3608
+ "v": 1,
3609
+ "alg": "Ed25519",
3610
+ "kid": "erziRf8en6nlChFs1zqtfOHoOyD2GyiXW98t3SYpLuk",
3611
+ "over": "sha256",
3612
+ "message": "crawlcheck-data-v1\nffd4756d7562c0a72d2fb88310727c57ed43c7bbcd3f9992fd08fcd09a24539d",
3613
+ "sig": "xhDC2hRhYMV_6jXKjz4F7q5c6R-7cUnZXqMJtLpplVdErDxDZLhsYNY0aPXzeOyYw5Te7-TJrrugUqMnuIuBAw",
3614
+ "signed_at": "2026-10-10T15:59:00.000Z",
3615
+ "key": {
3616
+ "kid": "erziRf8en6nlChFs1zqtfOHoOyD2GyiXW98t3SYpLuk",
3617
+ "jwk": {
3618
+ "kty": "OKP",
3619
+ "crv": "Ed25519",
3620
+ "x": "wS76C0bWq0ejgwsAlHq0imuG2HoW15ZeLhw9icbKbiA"
3621
+ },
3622
+ "published_in": "the suite's directory"
3623
+ }
3624
+ }
3625
+ }
3626
+ }
3627
+ },
3628
+ "sites": {
3629
+ "https://good.example/page": {
3630
+ "status": 200,
3631
+ "body": "ok"
3632
+ }
2788
3633
  },
2789
3634
  "expect": {
2790
- "proceed": false
3635
+ "proceed": true,
3636
+ "fetched": [
3637
+ "https://good.example/page"
3638
+ ],
3639
+ "receipt_header_to": [
3640
+ "good.example"
3641
+ ]
2791
3642
  }
2792
3643
  },
2793
3644
  {
2794
- "id": "fetch-ok",
2795
- "title": "a guarded fetch with no redirect",
2796
- "why": "positive control",
3645
+ "id": "fetch-blocked",
3646
+ "title": "a blocked domain is never contacted",
3647
+ "why": "the check runs before the request",
2797
3648
  "request": {
2798
- "url": "https://good.example/page",
3649
+ "url": "https://evil.example/",
2799
3650
  "action": "read",
2800
3651
  "allow_warn": false,
2801
3652
  "confirm": null,
@@ -2804,15 +3655,15 @@
2804
3655
  "max_hops": 10
2805
3656
  },
2806
3657
  "crawlcheck": {
2807
- "by_domain": {
2808
- "good.example": {
3658
+ "by_op": {
3659
+ "GET https://evil.example/": {
2809
3660
  "kind": "crawlcheck-decision",
2810
3661
  "v": 1,
2811
3662
  "decided_at": "2026-10-10T15:59:00.000Z",
2812
3663
  "expires_at": "2026-10-11T15:59:00.000Z",
2813
3664
  "clock_skew_s": 300,
2814
3665
  "nonce": "ccguard-acceptance-0001",
2815
- "domain": "good.example",
3666
+ "domain": "evil.example",
2816
3667
  "action": "read",
2817
3668
  "agent": null,
2818
3669
  "template": null,
@@ -2829,8 +3680,8 @@
2829
3680
  "version": "pf4",
2830
3681
  "rules_sha256": "18dd5636e0896692ab518050cb401744edea2e6f1086dff94fead314959bdc3e"
2831
3682
  },
2832
- "decision": "allow",
2833
- "base_decision": "allow",
3683
+ "decision": "block",
3684
+ "base_decision": "block",
2834
3685
  "human_confirmation_required": false,
2835
3686
  "reason_codes": [
2836
3687
  "resolve.actions.read"
@@ -2838,7 +3689,7 @@
2838
3689
  "steps": [
2839
3690
  {
2840
3691
  "rule": "resolve.actions.read",
2841
- "effect": "allow",
3692
+ "effect": "block",
2842
3693
  "why": "suite fixture"
2843
3694
  }
2844
3695
  ],
@@ -2849,37 +3700,64 @@
2849
3700
  },
2850
3701
  "resolve": {
2851
3702
  "sha256": "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
2852
- "kid": "xrog-5dLQHQuXmIsVCTFRFfPSzLVonFLRoWdifn1AmE",
3703
+ "kid": "erziRf8en6nlChFs1zqtfOHoOyD2GyiXW98t3SYpLuk",
2853
3704
  "leaf_hash": "cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc"
2854
3705
  },
2855
- "sha256": "538189facc04db817956a840415c602c48cf9c29ce7b626fbd2d6cd2db3a2b72",
3706
+ "operation": {
3707
+ "method": "GET",
3708
+ "url": "https://evil.example/"
3709
+ },
3710
+ "sha256": "c097927fe6ff66482496da283537d16115155e5f99274b4349c14e741baacd11",
2856
3711
  "signature": {
2857
3712
  "v": 1,
2858
3713
  "alg": "Ed25519",
2859
- "kid": "xrog-5dLQHQuXmIsVCTFRFfPSzLVonFLRoWdifn1AmE",
3714
+ "kid": "erziRf8en6nlChFs1zqtfOHoOyD2GyiXW98t3SYpLuk",
2860
3715
  "over": "sha256",
2861
- "message": "crawlcheck-data-v1\n538189facc04db817956a840415c602c48cf9c29ce7b626fbd2d6cd2db3a2b72",
2862
- "sig": "kebBznICRjh4gEDCOyvn4YRYaSxkCj4cvsRPWaC7NCCfPrFKgCiZHrVAFhODv_hWa7OfWpNvWME0Tio0W5UXAQ",
3716
+ "message": "crawlcheck-data-v1\nc097927fe6ff66482496da283537d16115155e5f99274b4349c14e741baacd11",
3717
+ "sig": "brT6jiLoeeIHNp6vOGpPjw_az2sV5FZAWuMXAWfloBG146MawxYgGZE0162fZB4pesgSdWD5ijVCAc43GOxrCQ",
2863
3718
  "signed_at": "2026-10-10T15:59:00.000Z",
2864
3719
  "key": {
2865
- "kid": "xrog-5dLQHQuXmIsVCTFRFfPSzLVonFLRoWdifn1AmE",
3720
+ "kid": "erziRf8en6nlChFs1zqtfOHoOyD2GyiXW98t3SYpLuk",
2866
3721
  "jwk": {
2867
3722
  "kty": "OKP",
2868
3723
  "crv": "Ed25519",
2869
- "x": "_EeVevPcJyuRWRCjFyG3-wRgmEdZmrn9tlBTvD31u8Q"
3724
+ "x": "wS76C0bWq0ejgwsAlHq0imuG2HoW15ZeLhw9icbKbiA"
2870
3725
  },
2871
3726
  "published_in": "the suite's directory"
2872
3727
  }
2873
3728
  }
2874
- },
2875
- "also-good.example": {
3729
+ }
3730
+ }
3731
+ },
3732
+ "sites": {},
3733
+ "expect": {
3734
+ "proceed": false,
3735
+ "fetched": []
3736
+ }
3737
+ },
3738
+ {
3739
+ "id": "redirect-to-blocked",
3740
+ "title": "an allowed page redirects to a blocked domain",
3741
+ "why": "every hop is re-checked; the blocked hop is never requested",
3742
+ "request": {
3743
+ "url": "https://good.example/go",
3744
+ "action": "read",
3745
+ "allow_warn": false,
3746
+ "confirm": null,
3747
+ "nonce": "ccguard-acceptance-0001",
3748
+ "now": "2026-10-10T16:00:00.000Z",
3749
+ "max_hops": 10
3750
+ },
3751
+ "crawlcheck": {
3752
+ "by_op": {
3753
+ "GET https://good.example/go": {
2876
3754
  "kind": "crawlcheck-decision",
2877
3755
  "v": 1,
2878
3756
  "decided_at": "2026-10-10T15:59:00.000Z",
2879
3757
  "expires_at": "2026-10-11T15:59:00.000Z",
2880
3758
  "clock_skew_s": 300,
2881
3759
  "nonce": "ccguard-acceptance-0001",
2882
- "domain": "also-good.example",
3760
+ "domain": "good.example",
2883
3761
  "action": "read",
2884
3762
  "agent": null,
2885
3763
  "template": null,
@@ -2916,30 +3794,34 @@
2916
3794
  },
2917
3795
  "resolve": {
2918
3796
  "sha256": "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
2919
- "kid": "xrog-5dLQHQuXmIsVCTFRFfPSzLVonFLRoWdifn1AmE",
3797
+ "kid": "erziRf8en6nlChFs1zqtfOHoOyD2GyiXW98t3SYpLuk",
2920
3798
  "leaf_hash": "cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc"
2921
3799
  },
2922
- "sha256": "397e79eadb3c6457282bf8ffc33b5840cada8edbfb2e3c56ddc8bada2fd62ee1",
3800
+ "operation": {
3801
+ "method": "GET",
3802
+ "url": "https://good.example/go"
3803
+ },
3804
+ "sha256": "0799f5d9b9c05780b606a572cdadd2be8f17a19b27932b635ab3b652c66a1aa0",
2923
3805
  "signature": {
2924
3806
  "v": 1,
2925
3807
  "alg": "Ed25519",
2926
- "kid": "xrog-5dLQHQuXmIsVCTFRFfPSzLVonFLRoWdifn1AmE",
3808
+ "kid": "erziRf8en6nlChFs1zqtfOHoOyD2GyiXW98t3SYpLuk",
2927
3809
  "over": "sha256",
2928
- "message": "crawlcheck-data-v1\n397e79eadb3c6457282bf8ffc33b5840cada8edbfb2e3c56ddc8bada2fd62ee1",
2929
- "sig": "CR_y7ei6pqwnAASl9hRtXwus3SNLpNzozCzHf_DyGwPxQilYPdubDDnTjnZDqvPDS49-0q-Ygt2mtpUbIQh0CQ",
3810
+ "message": "crawlcheck-data-v1\n0799f5d9b9c05780b606a572cdadd2be8f17a19b27932b635ab3b652c66a1aa0",
3811
+ "sig": "tTIdOx_4SRShrptBZB4Bjgzgu0aM0bMnsOy18geAxOGxH3chd_MQvBlUy8Q3dQYmpw4UcfSZOwm_psuqSDwqDg",
2930
3812
  "signed_at": "2026-10-10T15:59:00.000Z",
2931
3813
  "key": {
2932
- "kid": "xrog-5dLQHQuXmIsVCTFRFfPSzLVonFLRoWdifn1AmE",
3814
+ "kid": "erziRf8en6nlChFs1zqtfOHoOyD2GyiXW98t3SYpLuk",
2933
3815
  "jwk": {
2934
3816
  "kty": "OKP",
2935
3817
  "crv": "Ed25519",
2936
- "x": "_EeVevPcJyuRWRCjFyG3-wRgmEdZmrn9tlBTvD31u8Q"
3818
+ "x": "wS76C0bWq0ejgwsAlHq0imuG2HoW15ZeLhw9icbKbiA"
2937
3819
  },
2938
3820
  "published_in": "the suite's directory"
2939
3821
  }
2940
3822
  }
2941
3823
  },
2942
- "evil.example": {
3824
+ "GET https://evil.example/x": {
2943
3825
  "kind": "crawlcheck-decision",
2944
3826
  "v": 1,
2945
3827
  "decided_at": "2026-10-10T15:59:00.000Z",
@@ -2983,24 +3865,28 @@
2983
3865
  },
2984
3866
  "resolve": {
2985
3867
  "sha256": "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
2986
- "kid": "xrog-5dLQHQuXmIsVCTFRFfPSzLVonFLRoWdifn1AmE",
3868
+ "kid": "erziRf8en6nlChFs1zqtfOHoOyD2GyiXW98t3SYpLuk",
2987
3869
  "leaf_hash": "cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc"
2988
3870
  },
2989
- "sha256": "da1b746cfc0ec51e4a6efcefc5e63d824652ef99c21828054d237df6055ae9e9",
3871
+ "operation": {
3872
+ "method": "GET",
3873
+ "url": "https://evil.example/x"
3874
+ },
3875
+ "sha256": "278bd89a92a2bd8f8e6b226fbee8dc7630caa9fb49bf5ad408017dd2a837c103",
2990
3876
  "signature": {
2991
3877
  "v": 1,
2992
3878
  "alg": "Ed25519",
2993
- "kid": "xrog-5dLQHQuXmIsVCTFRFfPSzLVonFLRoWdifn1AmE",
3879
+ "kid": "erziRf8en6nlChFs1zqtfOHoOyD2GyiXW98t3SYpLuk",
2994
3880
  "over": "sha256",
2995
- "message": "crawlcheck-data-v1\nda1b746cfc0ec51e4a6efcefc5e63d824652ef99c21828054d237df6055ae9e9",
2996
- "sig": "BZFgavq6NoUbGwIS_A8Vdbge-EGp4hi5HXxy396I5UuHvjukMIcnXrae6hwPDmY_UIdpGWTHz8fMyW0FAEvODw",
3881
+ "message": "crawlcheck-data-v1\n278bd89a92a2bd8f8e6b226fbee8dc7630caa9fb49bf5ad408017dd2a837c103",
3882
+ "sig": "M_nxMMCbA0Rj1sp5vK1x-gpvoiXd1SKNDli9o0cC57XsagS5Jc7iY_L9uqQpsPKLFunWSw6WhLsIK_x_SWh2BQ",
2997
3883
  "signed_at": "2026-10-10T15:59:00.000Z",
2998
3884
  "key": {
2999
- "kid": "xrog-5dLQHQuXmIsVCTFRFfPSzLVonFLRoWdifn1AmE",
3885
+ "kid": "erziRf8en6nlChFs1zqtfOHoOyD2GyiXW98t3SYpLuk",
3000
3886
  "jwk": {
3001
3887
  "kty": "OKP",
3002
3888
  "crv": "Ed25519",
3003
- "x": "_EeVevPcJyuRWRCjFyG3-wRgmEdZmrn9tlBTvD31u8Q"
3889
+ "x": "wS76C0bWq0ejgwsAlHq0imuG2HoW15ZeLhw9icbKbiA"
3004
3890
  },
3005
3891
  "published_in": "the suite's directory"
3006
3892
  }
@@ -3009,27 +3895,24 @@
3009
3895
  }
3010
3896
  },
3011
3897
  "sites": {
3012
- "https://good.example/page": {
3013
- "status": 200,
3014
- "body": "ok"
3898
+ "https://good.example/go": {
3899
+ "status": 302,
3900
+ "location": "https://evil.example/x"
3015
3901
  }
3016
3902
  },
3017
3903
  "expect": {
3018
- "proceed": true,
3904
+ "proceed": false,
3019
3905
  "fetched": [
3020
- "https://good.example/page"
3021
- ],
3022
- "receipt_header_to": [
3023
- "good.example"
3906
+ "https://good.example/go"
3024
3907
  ]
3025
3908
  }
3026
3909
  },
3027
3910
  {
3028
- "id": "fetch-blocked",
3029
- "title": "a blocked domain is never contacted",
3030
- "why": "the check runs before the request",
3911
+ "id": "redirect-to-allowed",
3912
+ "title": "an allowed page redirects to another allowed domain",
3913
+ "why": "each domain gets its own receipt",
3031
3914
  "request": {
3032
- "url": "https://evil.example/",
3915
+ "url": "https://good.example/go",
3033
3916
  "action": "read",
3034
3917
  "allow_warn": false,
3035
3918
  "confirm": null,
@@ -3038,8 +3921,8 @@
3038
3921
  "max_hops": 10
3039
3922
  },
3040
3923
  "crawlcheck": {
3041
- "by_domain": {
3042
- "good.example": {
3924
+ "by_op": {
3925
+ "GET https://good.example/go": {
3043
3926
  "kind": "crawlcheck-decision",
3044
3927
  "v": 1,
3045
3928
  "decided_at": "2026-10-10T15:59:00.000Z",
@@ -3083,30 +3966,34 @@
3083
3966
  },
3084
3967
  "resolve": {
3085
3968
  "sha256": "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
3086
- "kid": "xrog-5dLQHQuXmIsVCTFRFfPSzLVonFLRoWdifn1AmE",
3969
+ "kid": "erziRf8en6nlChFs1zqtfOHoOyD2GyiXW98t3SYpLuk",
3087
3970
  "leaf_hash": "cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc"
3088
3971
  },
3089
- "sha256": "538189facc04db817956a840415c602c48cf9c29ce7b626fbd2d6cd2db3a2b72",
3972
+ "operation": {
3973
+ "method": "GET",
3974
+ "url": "https://good.example/go"
3975
+ },
3976
+ "sha256": "0799f5d9b9c05780b606a572cdadd2be8f17a19b27932b635ab3b652c66a1aa0",
3090
3977
  "signature": {
3091
3978
  "v": 1,
3092
3979
  "alg": "Ed25519",
3093
- "kid": "xrog-5dLQHQuXmIsVCTFRFfPSzLVonFLRoWdifn1AmE",
3980
+ "kid": "erziRf8en6nlChFs1zqtfOHoOyD2GyiXW98t3SYpLuk",
3094
3981
  "over": "sha256",
3095
- "message": "crawlcheck-data-v1\n538189facc04db817956a840415c602c48cf9c29ce7b626fbd2d6cd2db3a2b72",
3096
- "sig": "kebBznICRjh4gEDCOyvn4YRYaSxkCj4cvsRPWaC7NCCfPrFKgCiZHrVAFhODv_hWa7OfWpNvWME0Tio0W5UXAQ",
3982
+ "message": "crawlcheck-data-v1\n0799f5d9b9c05780b606a572cdadd2be8f17a19b27932b635ab3b652c66a1aa0",
3983
+ "sig": "tTIdOx_4SRShrptBZB4Bjgzgu0aM0bMnsOy18geAxOGxH3chd_MQvBlUy8Q3dQYmpw4UcfSZOwm_psuqSDwqDg",
3097
3984
  "signed_at": "2026-10-10T15:59:00.000Z",
3098
3985
  "key": {
3099
- "kid": "xrog-5dLQHQuXmIsVCTFRFfPSzLVonFLRoWdifn1AmE",
3986
+ "kid": "erziRf8en6nlChFs1zqtfOHoOyD2GyiXW98t3SYpLuk",
3100
3987
  "jwk": {
3101
3988
  "kty": "OKP",
3102
3989
  "crv": "Ed25519",
3103
- "x": "_EeVevPcJyuRWRCjFyG3-wRgmEdZmrn9tlBTvD31u8Q"
3990
+ "x": "wS76C0bWq0ejgwsAlHq0imuG2HoW15ZeLhw9icbKbiA"
3104
3991
  },
3105
3992
  "published_in": "the suite's directory"
3106
3993
  }
3107
3994
  }
3108
3995
  },
3109
- "also-good.example": {
3996
+ "GET https://also-good.example/y": {
3110
3997
  "kind": "crawlcheck-decision",
3111
3998
  "v": 1,
3112
3999
  "decided_at": "2026-10-10T15:59:00.000Z",
@@ -3150,37 +4037,80 @@
3150
4037
  },
3151
4038
  "resolve": {
3152
4039
  "sha256": "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
3153
- "kid": "xrog-5dLQHQuXmIsVCTFRFfPSzLVonFLRoWdifn1AmE",
4040
+ "kid": "erziRf8en6nlChFs1zqtfOHoOyD2GyiXW98t3SYpLuk",
3154
4041
  "leaf_hash": "cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc"
3155
4042
  },
3156
- "sha256": "397e79eadb3c6457282bf8ffc33b5840cada8edbfb2e3c56ddc8bada2fd62ee1",
4043
+ "operation": {
4044
+ "method": "GET",
4045
+ "url": "https://also-good.example/y"
4046
+ },
4047
+ "sha256": "58926fcaf74ab6664fde403b57434686e78c3cd0be586bddd7531dda395fc0df",
3157
4048
  "signature": {
3158
4049
  "v": 1,
3159
4050
  "alg": "Ed25519",
3160
- "kid": "xrog-5dLQHQuXmIsVCTFRFfPSzLVonFLRoWdifn1AmE",
4051
+ "kid": "erziRf8en6nlChFs1zqtfOHoOyD2GyiXW98t3SYpLuk",
3161
4052
  "over": "sha256",
3162
- "message": "crawlcheck-data-v1\n397e79eadb3c6457282bf8ffc33b5840cada8edbfb2e3c56ddc8bada2fd62ee1",
3163
- "sig": "CR_y7ei6pqwnAASl9hRtXwus3SNLpNzozCzHf_DyGwPxQilYPdubDDnTjnZDqvPDS49-0q-Ygt2mtpUbIQh0CQ",
4053
+ "message": "crawlcheck-data-v1\n58926fcaf74ab6664fde403b57434686e78c3cd0be586bddd7531dda395fc0df",
4054
+ "sig": "ZY6C7z6Cmq_fhSlPKuq5OvD9ROyZwsi4ShGchRH0CUwD1pxPfYgfcBlUfrcriGPM-74QK2oBoyR9MQwEcLjYCg",
3164
4055
  "signed_at": "2026-10-10T15:59:00.000Z",
3165
4056
  "key": {
3166
- "kid": "xrog-5dLQHQuXmIsVCTFRFfPSzLVonFLRoWdifn1AmE",
4057
+ "kid": "erziRf8en6nlChFs1zqtfOHoOyD2GyiXW98t3SYpLuk",
3167
4058
  "jwk": {
3168
4059
  "kty": "OKP",
3169
4060
  "crv": "Ed25519",
3170
- "x": "_EeVevPcJyuRWRCjFyG3-wRgmEdZmrn9tlBTvD31u8Q"
4061
+ "x": "wS76C0bWq0ejgwsAlHq0imuG2HoW15ZeLhw9icbKbiA"
3171
4062
  },
3172
4063
  "published_in": "the suite's directory"
3173
4064
  }
3174
4065
  }
3175
- },
3176
- "evil.example": {
4066
+ }
4067
+ }
4068
+ },
4069
+ "sites": {
4070
+ "https://good.example/go": {
4071
+ "status": 301,
4072
+ "location": "https://also-good.example/y"
4073
+ },
4074
+ "https://also-good.example/y": {
4075
+ "status": 200,
4076
+ "body": "ok"
4077
+ }
4078
+ },
4079
+ "expect": {
4080
+ "proceed": true,
4081
+ "fetched": [
4082
+ "https://good.example/go",
4083
+ "https://also-good.example/y"
4084
+ ],
4085
+ "receipt_header_to": [
4086
+ "good.example",
4087
+ "also-good.example"
4088
+ ]
4089
+ }
4090
+ },
4091
+ {
4092
+ "id": "redirect-relative",
4093
+ "title": "a relative redirect stays on the checked domain",
4094
+ "why": "",
4095
+ "request": {
4096
+ "url": "https://good.example/a",
4097
+ "action": "read",
4098
+ "allow_warn": false,
4099
+ "confirm": null,
4100
+ "nonce": "ccguard-acceptance-0001",
4101
+ "now": "2026-10-10T16:00:00.000Z",
4102
+ "max_hops": 10
4103
+ },
4104
+ "crawlcheck": {
4105
+ "by_op": {
4106
+ "GET https://good.example/a": {
3177
4107
  "kind": "crawlcheck-decision",
3178
4108
  "v": 1,
3179
4109
  "decided_at": "2026-10-10T15:59:00.000Z",
3180
4110
  "expires_at": "2026-10-11T15:59:00.000Z",
3181
4111
  "clock_skew_s": 300,
3182
4112
  "nonce": "ccguard-acceptance-0001",
3183
- "domain": "evil.example",
4113
+ "domain": "good.example",
3184
4114
  "action": "read",
3185
4115
  "agent": null,
3186
4116
  "template": null,
@@ -3197,8 +4127,8 @@
3197
4127
  "version": "pf4",
3198
4128
  "rules_sha256": "18dd5636e0896692ab518050cb401744edea2e6f1086dff94fead314959bdc3e"
3199
4129
  },
3200
- "decision": "block",
3201
- "base_decision": "block",
4130
+ "decision": "allow",
4131
+ "base_decision": "allow",
3202
4132
  "human_confirmation_required": false,
3203
4133
  "reason_codes": [
3204
4134
  "resolve.actions.read"
@@ -3206,7 +4136,7 @@
3206
4136
  "steps": [
3207
4137
  {
3208
4138
  "rule": "resolve.actions.read",
3209
- "effect": "block",
4139
+ "effect": "allow",
3210
4140
  "why": "suite fixture"
3211
4141
  }
3212
4142
  ],
@@ -3217,53 +4147,34 @@
3217
4147
  },
3218
4148
  "resolve": {
3219
4149
  "sha256": "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
3220
- "kid": "xrog-5dLQHQuXmIsVCTFRFfPSzLVonFLRoWdifn1AmE",
4150
+ "kid": "erziRf8en6nlChFs1zqtfOHoOyD2GyiXW98t3SYpLuk",
3221
4151
  "leaf_hash": "cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc"
3222
4152
  },
3223
- "sha256": "da1b746cfc0ec51e4a6efcefc5e63d824652ef99c21828054d237df6055ae9e9",
4153
+ "operation": {
4154
+ "method": "GET",
4155
+ "url": "https://good.example/a"
4156
+ },
4157
+ "sha256": "52ee5980ea3a45f938f9749bd6dd7fe4ea44baa3cc33ad68147da216f1ddbb7d",
3224
4158
  "signature": {
3225
4159
  "v": 1,
3226
4160
  "alg": "Ed25519",
3227
- "kid": "xrog-5dLQHQuXmIsVCTFRFfPSzLVonFLRoWdifn1AmE",
4161
+ "kid": "erziRf8en6nlChFs1zqtfOHoOyD2GyiXW98t3SYpLuk",
3228
4162
  "over": "sha256",
3229
- "message": "crawlcheck-data-v1\nda1b746cfc0ec51e4a6efcefc5e63d824652ef99c21828054d237df6055ae9e9",
3230
- "sig": "BZFgavq6NoUbGwIS_A8Vdbge-EGp4hi5HXxy396I5UuHvjukMIcnXrae6hwPDmY_UIdpGWTHz8fMyW0FAEvODw",
4163
+ "message": "crawlcheck-data-v1\n52ee5980ea3a45f938f9749bd6dd7fe4ea44baa3cc33ad68147da216f1ddbb7d",
4164
+ "sig": "e4FDzMvLaGkBv9iHlI0YMfxIax54-6tVvjUlFKKFTVV9dez1wkrHKVod9u2Ecs0RzIDY7H4dFncm8cQ0iRtyBw",
3231
4165
  "signed_at": "2026-10-10T15:59:00.000Z",
3232
4166
  "key": {
3233
- "kid": "xrog-5dLQHQuXmIsVCTFRFfPSzLVonFLRoWdifn1AmE",
4167
+ "kid": "erziRf8en6nlChFs1zqtfOHoOyD2GyiXW98t3SYpLuk",
3234
4168
  "jwk": {
3235
4169
  "kty": "OKP",
3236
4170
  "crv": "Ed25519",
3237
- "x": "_EeVevPcJyuRWRCjFyG3-wRgmEdZmrn9tlBTvD31u8Q"
4171
+ "x": "wS76C0bWq0ejgwsAlHq0imuG2HoW15ZeLhw9icbKbiA"
3238
4172
  },
3239
4173
  "published_in": "the suite's directory"
3240
4174
  }
3241
4175
  }
3242
- }
3243
- }
3244
- },
3245
- "sites": {},
3246
- "expect": {
3247
- "proceed": false,
3248
- "fetched": []
3249
- }
3250
- },
3251
- {
3252
- "id": "redirect-to-blocked",
3253
- "title": "an allowed page redirects to a blocked domain",
3254
- "why": "every hop is re-checked; the blocked hop is never requested",
3255
- "request": {
3256
- "url": "https://good.example/go",
3257
- "action": "read",
3258
- "allow_warn": false,
3259
- "confirm": null,
3260
- "nonce": "ccguard-acceptance-0001",
3261
- "now": "2026-10-10T16:00:00.000Z",
3262
- "max_hops": 10
3263
- },
3264
- "crawlcheck": {
3265
- "by_domain": {
3266
- "good.example": {
4176
+ },
4177
+ "GET https://good.example/b": {
3267
4178
  "kind": "crawlcheck-decision",
3268
4179
  "v": 1,
3269
4180
  "decided_at": "2026-10-10T15:59:00.000Z",
@@ -3307,37 +4218,76 @@
3307
4218
  },
3308
4219
  "resolve": {
3309
4220
  "sha256": "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
3310
- "kid": "xrog-5dLQHQuXmIsVCTFRFfPSzLVonFLRoWdifn1AmE",
4221
+ "kid": "erziRf8en6nlChFs1zqtfOHoOyD2GyiXW98t3SYpLuk",
3311
4222
  "leaf_hash": "cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc"
3312
4223
  },
3313
- "sha256": "538189facc04db817956a840415c602c48cf9c29ce7b626fbd2d6cd2db3a2b72",
4224
+ "operation": {
4225
+ "method": "GET",
4226
+ "url": "https://good.example/b"
4227
+ },
4228
+ "sha256": "dd4231d4daa44acd9033c70dfe05a201f2540c43c9cad322480746b9610b77e4",
3314
4229
  "signature": {
3315
4230
  "v": 1,
3316
4231
  "alg": "Ed25519",
3317
- "kid": "xrog-5dLQHQuXmIsVCTFRFfPSzLVonFLRoWdifn1AmE",
4232
+ "kid": "erziRf8en6nlChFs1zqtfOHoOyD2GyiXW98t3SYpLuk",
3318
4233
  "over": "sha256",
3319
- "message": "crawlcheck-data-v1\n538189facc04db817956a840415c602c48cf9c29ce7b626fbd2d6cd2db3a2b72",
3320
- "sig": "kebBznICRjh4gEDCOyvn4YRYaSxkCj4cvsRPWaC7NCCfPrFKgCiZHrVAFhODv_hWa7OfWpNvWME0Tio0W5UXAQ",
4234
+ "message": "crawlcheck-data-v1\ndd4231d4daa44acd9033c70dfe05a201f2540c43c9cad322480746b9610b77e4",
4235
+ "sig": "o6bM9TTpxqvMzFDBY1bitjqUyZu1nOX-U9MoeG6CJ_NoOsNIrciP-py7qyRmow8hxdM40O8UHz1H8WDtfEWYBw",
3321
4236
  "signed_at": "2026-10-10T15:59:00.000Z",
3322
4237
  "key": {
3323
- "kid": "xrog-5dLQHQuXmIsVCTFRFfPSzLVonFLRoWdifn1AmE",
4238
+ "kid": "erziRf8en6nlChFs1zqtfOHoOyD2GyiXW98t3SYpLuk",
3324
4239
  "jwk": {
3325
4240
  "kty": "OKP",
3326
4241
  "crv": "Ed25519",
3327
- "x": "_EeVevPcJyuRWRCjFyG3-wRgmEdZmrn9tlBTvD31u8Q"
4242
+ "x": "wS76C0bWq0ejgwsAlHq0imuG2HoW15ZeLhw9icbKbiA"
3328
4243
  },
3329
4244
  "published_in": "the suite's directory"
3330
4245
  }
3331
4246
  }
3332
- },
3333
- "also-good.example": {
4247
+ }
4248
+ }
4249
+ },
4250
+ "sites": {
4251
+ "https://good.example/a": {
4252
+ "status": 307,
4253
+ "location": "/b"
4254
+ },
4255
+ "https://good.example/b": {
4256
+ "status": 200,
4257
+ "body": "ok"
4258
+ }
4259
+ },
4260
+ "expect": {
4261
+ "proceed": true,
4262
+ "fetched": [
4263
+ "https://good.example/a",
4264
+ "https://good.example/b"
4265
+ ]
4266
+ }
4267
+ },
4268
+ {
4269
+ "id": "redirect-scheme",
4270
+ "title": "a redirect to a file: URL",
4271
+ "why": "only http(s)",
4272
+ "request": {
4273
+ "url": "https://good.example/a",
4274
+ "action": "read",
4275
+ "allow_warn": false,
4276
+ "confirm": null,
4277
+ "nonce": "ccguard-acceptance-0001",
4278
+ "now": "2026-10-10T16:00:00.000Z",
4279
+ "max_hops": 10
4280
+ },
4281
+ "crawlcheck": {
4282
+ "by_op": {
4283
+ "GET https://good.example/a": {
3334
4284
  "kind": "crawlcheck-decision",
3335
4285
  "v": 1,
3336
4286
  "decided_at": "2026-10-10T15:59:00.000Z",
3337
4287
  "expires_at": "2026-10-11T15:59:00.000Z",
3338
4288
  "clock_skew_s": 300,
3339
4289
  "nonce": "ccguard-acceptance-0001",
3340
- "domain": "also-good.example",
4290
+ "domain": "good.example",
3341
4291
  "action": "read",
3342
4292
  "agent": null,
3343
4293
  "template": null,
@@ -3374,37 +4324,71 @@
3374
4324
  },
3375
4325
  "resolve": {
3376
4326
  "sha256": "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
3377
- "kid": "xrog-5dLQHQuXmIsVCTFRFfPSzLVonFLRoWdifn1AmE",
4327
+ "kid": "erziRf8en6nlChFs1zqtfOHoOyD2GyiXW98t3SYpLuk",
3378
4328
  "leaf_hash": "cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc"
3379
4329
  },
3380
- "sha256": "397e79eadb3c6457282bf8ffc33b5840cada8edbfb2e3c56ddc8bada2fd62ee1",
4330
+ "operation": {
4331
+ "method": "GET",
4332
+ "url": "https://good.example/a"
4333
+ },
4334
+ "sha256": "52ee5980ea3a45f938f9749bd6dd7fe4ea44baa3cc33ad68147da216f1ddbb7d",
3381
4335
  "signature": {
3382
4336
  "v": 1,
3383
4337
  "alg": "Ed25519",
3384
- "kid": "xrog-5dLQHQuXmIsVCTFRFfPSzLVonFLRoWdifn1AmE",
4338
+ "kid": "erziRf8en6nlChFs1zqtfOHoOyD2GyiXW98t3SYpLuk",
3385
4339
  "over": "sha256",
3386
- "message": "crawlcheck-data-v1\n397e79eadb3c6457282bf8ffc33b5840cada8edbfb2e3c56ddc8bada2fd62ee1",
3387
- "sig": "CR_y7ei6pqwnAASl9hRtXwus3SNLpNzozCzHf_DyGwPxQilYPdubDDnTjnZDqvPDS49-0q-Ygt2mtpUbIQh0CQ",
4340
+ "message": "crawlcheck-data-v1\n52ee5980ea3a45f938f9749bd6dd7fe4ea44baa3cc33ad68147da216f1ddbb7d",
4341
+ "sig": "e4FDzMvLaGkBv9iHlI0YMfxIax54-6tVvjUlFKKFTVV9dez1wkrHKVod9u2Ecs0RzIDY7H4dFncm8cQ0iRtyBw",
3388
4342
  "signed_at": "2026-10-10T15:59:00.000Z",
3389
4343
  "key": {
3390
- "kid": "xrog-5dLQHQuXmIsVCTFRFfPSzLVonFLRoWdifn1AmE",
4344
+ "kid": "erziRf8en6nlChFs1zqtfOHoOyD2GyiXW98t3SYpLuk",
3391
4345
  "jwk": {
3392
4346
  "kty": "OKP",
3393
4347
  "crv": "Ed25519",
3394
- "x": "_EeVevPcJyuRWRCjFyG3-wRgmEdZmrn9tlBTvD31u8Q"
4348
+ "x": "wS76C0bWq0ejgwsAlHq0imuG2HoW15ZeLhw9icbKbiA"
3395
4349
  },
3396
4350
  "published_in": "the suite's directory"
3397
4351
  }
3398
4352
  }
3399
- },
3400
- "evil.example": {
4353
+ }
4354
+ }
4355
+ },
4356
+ "sites": {
4357
+ "https://good.example/a": {
4358
+ "status": 302,
4359
+ "location": "file:///etc/passwd"
4360
+ }
4361
+ },
4362
+ "expect": {
4363
+ "proceed": false,
4364
+ "fetched": [
4365
+ "https://good.example/a"
4366
+ ]
4367
+ }
4368
+ },
4369
+ {
4370
+ "id": "redirect-loop",
4371
+ "title": "more than the hop limit",
4372
+ "why": "at most 10 redirects",
4373
+ "request": {
4374
+ "url": "https://good.example/l0",
4375
+ "action": "read",
4376
+ "allow_warn": false,
4377
+ "confirm": null,
4378
+ "nonce": "ccguard-acceptance-0001",
4379
+ "now": "2026-10-10T16:00:00.000Z",
4380
+ "max_hops": 10
4381
+ },
4382
+ "crawlcheck": {
4383
+ "by_op": {
4384
+ "GET https://good.example/l0": {
3401
4385
  "kind": "crawlcheck-decision",
3402
4386
  "v": 1,
3403
4387
  "decided_at": "2026-10-10T15:59:00.000Z",
3404
4388
  "expires_at": "2026-10-11T15:59:00.000Z",
3405
4389
  "clock_skew_s": 300,
3406
4390
  "nonce": "ccguard-acceptance-0001",
3407
- "domain": "evil.example",
4391
+ "domain": "good.example",
3408
4392
  "action": "read",
3409
4393
  "agent": null,
3410
4394
  "template": null,
@@ -3421,8 +4405,8 @@
3421
4405
  "version": "pf4",
3422
4406
  "rules_sha256": "18dd5636e0896692ab518050cb401744edea2e6f1086dff94fead314959bdc3e"
3423
4407
  },
3424
- "decision": "block",
3425
- "base_decision": "block",
4408
+ "decision": "allow",
4409
+ "base_decision": "allow",
3426
4410
  "human_confirmation_required": false,
3427
4411
  "reason_codes": [
3428
4412
  "resolve.actions.read"
@@ -3430,7 +4414,7 @@
3430
4414
  "steps": [
3431
4415
  {
3432
4416
  "rule": "resolve.actions.read",
3433
- "effect": "block",
4417
+ "effect": "allow",
3434
4418
  "why": "suite fixture"
3435
4419
  }
3436
4420
  ],
@@ -3441,60 +4425,34 @@
3441
4425
  },
3442
4426
  "resolve": {
3443
4427
  "sha256": "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
3444
- "kid": "xrog-5dLQHQuXmIsVCTFRFfPSzLVonFLRoWdifn1AmE",
4428
+ "kid": "erziRf8en6nlChFs1zqtfOHoOyD2GyiXW98t3SYpLuk",
3445
4429
  "leaf_hash": "cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc"
3446
4430
  },
3447
- "sha256": "da1b746cfc0ec51e4a6efcefc5e63d824652ef99c21828054d237df6055ae9e9",
4431
+ "operation": {
4432
+ "method": "GET",
4433
+ "url": "https://good.example/l0"
4434
+ },
4435
+ "sha256": "98bd19750f3670f4285238cf44dba630313a98bb827441a6a47c1adef45fc876",
3448
4436
  "signature": {
3449
4437
  "v": 1,
3450
4438
  "alg": "Ed25519",
3451
- "kid": "xrog-5dLQHQuXmIsVCTFRFfPSzLVonFLRoWdifn1AmE",
4439
+ "kid": "erziRf8en6nlChFs1zqtfOHoOyD2GyiXW98t3SYpLuk",
3452
4440
  "over": "sha256",
3453
- "message": "crawlcheck-data-v1\nda1b746cfc0ec51e4a6efcefc5e63d824652ef99c21828054d237df6055ae9e9",
3454
- "sig": "BZFgavq6NoUbGwIS_A8Vdbge-EGp4hi5HXxy396I5UuHvjukMIcnXrae6hwPDmY_UIdpGWTHz8fMyW0FAEvODw",
4441
+ "message": "crawlcheck-data-v1\n98bd19750f3670f4285238cf44dba630313a98bb827441a6a47c1adef45fc876",
4442
+ "sig": "xMFSWftcG4bzi5MRdgf72eF-BH4MjrMuLUqbDFaewnvXSk3gQDh2NSnQ2qGRK1QywrqyIZprk0ezkfbfEfSdBw",
3455
4443
  "signed_at": "2026-10-10T15:59:00.000Z",
3456
4444
  "key": {
3457
- "kid": "xrog-5dLQHQuXmIsVCTFRFfPSzLVonFLRoWdifn1AmE",
4445
+ "kid": "erziRf8en6nlChFs1zqtfOHoOyD2GyiXW98t3SYpLuk",
3458
4446
  "jwk": {
3459
4447
  "kty": "OKP",
3460
4448
  "crv": "Ed25519",
3461
- "x": "_EeVevPcJyuRWRCjFyG3-wRgmEdZmrn9tlBTvD31u8Q"
4449
+ "x": "wS76C0bWq0ejgwsAlHq0imuG2HoW15ZeLhw9icbKbiA"
3462
4450
  },
3463
4451
  "published_in": "the suite's directory"
3464
4452
  }
3465
4453
  }
3466
- }
3467
- }
3468
- },
3469
- "sites": {
3470
- "https://good.example/go": {
3471
- "status": 302,
3472
- "location": "https://evil.example/x"
3473
- }
3474
- },
3475
- "expect": {
3476
- "proceed": false,
3477
- "fetched": [
3478
- "https://good.example/go"
3479
- ]
3480
- }
3481
- },
3482
- {
3483
- "id": "redirect-to-allowed",
3484
- "title": "an allowed page redirects to another allowed domain",
3485
- "why": "each domain gets its own receipt",
3486
- "request": {
3487
- "url": "https://good.example/go",
3488
- "action": "read",
3489
- "allow_warn": false,
3490
- "confirm": null,
3491
- "nonce": "ccguard-acceptance-0001",
3492
- "now": "2026-10-10T16:00:00.000Z",
3493
- "max_hops": 10
3494
- },
3495
- "crawlcheck": {
3496
- "by_domain": {
3497
- "good.example": {
4454
+ },
4455
+ "GET https://good.example/l1": {
3498
4456
  "kind": "crawlcheck-decision",
3499
4457
  "v": 1,
3500
4458
  "decided_at": "2026-10-10T15:59:00.000Z",
@@ -3538,37 +4496,41 @@
3538
4496
  },
3539
4497
  "resolve": {
3540
4498
  "sha256": "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
3541
- "kid": "xrog-5dLQHQuXmIsVCTFRFfPSzLVonFLRoWdifn1AmE",
4499
+ "kid": "erziRf8en6nlChFs1zqtfOHoOyD2GyiXW98t3SYpLuk",
3542
4500
  "leaf_hash": "cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc"
3543
4501
  },
3544
- "sha256": "538189facc04db817956a840415c602c48cf9c29ce7b626fbd2d6cd2db3a2b72",
4502
+ "operation": {
4503
+ "method": "GET",
4504
+ "url": "https://good.example/l1"
4505
+ },
4506
+ "sha256": "73ed86063006f837c9ccdc5676a6175abb4aaff781b2293cec39a01a3df1fba9",
3545
4507
  "signature": {
3546
4508
  "v": 1,
3547
4509
  "alg": "Ed25519",
3548
- "kid": "xrog-5dLQHQuXmIsVCTFRFfPSzLVonFLRoWdifn1AmE",
4510
+ "kid": "erziRf8en6nlChFs1zqtfOHoOyD2GyiXW98t3SYpLuk",
3549
4511
  "over": "sha256",
3550
- "message": "crawlcheck-data-v1\n538189facc04db817956a840415c602c48cf9c29ce7b626fbd2d6cd2db3a2b72",
3551
- "sig": "kebBznICRjh4gEDCOyvn4YRYaSxkCj4cvsRPWaC7NCCfPrFKgCiZHrVAFhODv_hWa7OfWpNvWME0Tio0W5UXAQ",
4512
+ "message": "crawlcheck-data-v1\n73ed86063006f837c9ccdc5676a6175abb4aaff781b2293cec39a01a3df1fba9",
4513
+ "sig": "og8TUoSQ5JdgeVgxKNzGlYEVAFABy6H4m2whqfV3Qk44SiRGPe3nYWFzmoqZm0VMduS_QBMidnAyCCcMzcQODA",
3552
4514
  "signed_at": "2026-10-10T15:59:00.000Z",
3553
4515
  "key": {
3554
- "kid": "xrog-5dLQHQuXmIsVCTFRFfPSzLVonFLRoWdifn1AmE",
4516
+ "kid": "erziRf8en6nlChFs1zqtfOHoOyD2GyiXW98t3SYpLuk",
3555
4517
  "jwk": {
3556
4518
  "kty": "OKP",
3557
4519
  "crv": "Ed25519",
3558
- "x": "_EeVevPcJyuRWRCjFyG3-wRgmEdZmrn9tlBTvD31u8Q"
4520
+ "x": "wS76C0bWq0ejgwsAlHq0imuG2HoW15ZeLhw9icbKbiA"
3559
4521
  },
3560
4522
  "published_in": "the suite's directory"
3561
4523
  }
3562
4524
  }
3563
4525
  },
3564
- "also-good.example": {
4526
+ "GET https://good.example/l2": {
3565
4527
  "kind": "crawlcheck-decision",
3566
4528
  "v": 1,
3567
4529
  "decided_at": "2026-10-10T15:59:00.000Z",
3568
4530
  "expires_at": "2026-10-11T15:59:00.000Z",
3569
4531
  "clock_skew_s": 300,
3570
4532
  "nonce": "ccguard-acceptance-0001",
3571
- "domain": "also-good.example",
4533
+ "domain": "good.example",
3572
4534
  "action": "read",
3573
4535
  "agent": null,
3574
4536
  "template": null,
@@ -3605,37 +4567,41 @@
3605
4567
  },
3606
4568
  "resolve": {
3607
4569
  "sha256": "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
3608
- "kid": "xrog-5dLQHQuXmIsVCTFRFfPSzLVonFLRoWdifn1AmE",
4570
+ "kid": "erziRf8en6nlChFs1zqtfOHoOyD2GyiXW98t3SYpLuk",
3609
4571
  "leaf_hash": "cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc"
3610
4572
  },
3611
- "sha256": "397e79eadb3c6457282bf8ffc33b5840cada8edbfb2e3c56ddc8bada2fd62ee1",
4573
+ "operation": {
4574
+ "method": "GET",
4575
+ "url": "https://good.example/l2"
4576
+ },
4577
+ "sha256": "fcac706f97c740392c2844913f5db02dc8430f78394b727f4aa0c046b5733a8f",
3612
4578
  "signature": {
3613
4579
  "v": 1,
3614
4580
  "alg": "Ed25519",
3615
- "kid": "xrog-5dLQHQuXmIsVCTFRFfPSzLVonFLRoWdifn1AmE",
4581
+ "kid": "erziRf8en6nlChFs1zqtfOHoOyD2GyiXW98t3SYpLuk",
3616
4582
  "over": "sha256",
3617
- "message": "crawlcheck-data-v1\n397e79eadb3c6457282bf8ffc33b5840cada8edbfb2e3c56ddc8bada2fd62ee1",
3618
- "sig": "CR_y7ei6pqwnAASl9hRtXwus3SNLpNzozCzHf_DyGwPxQilYPdubDDnTjnZDqvPDS49-0q-Ygt2mtpUbIQh0CQ",
4583
+ "message": "crawlcheck-data-v1\nfcac706f97c740392c2844913f5db02dc8430f78394b727f4aa0c046b5733a8f",
4584
+ "sig": "WtHkvV0WDGiNawtm2rh_n1ZiNlR4A0Dn4fLiJQmXTrw33ItWtgr4PtIR62si6tR2s1q3I_b5HX82Fdo3lsFXCw",
3619
4585
  "signed_at": "2026-10-10T15:59:00.000Z",
3620
4586
  "key": {
3621
- "kid": "xrog-5dLQHQuXmIsVCTFRFfPSzLVonFLRoWdifn1AmE",
4587
+ "kid": "erziRf8en6nlChFs1zqtfOHoOyD2GyiXW98t3SYpLuk",
3622
4588
  "jwk": {
3623
4589
  "kty": "OKP",
3624
4590
  "crv": "Ed25519",
3625
- "x": "_EeVevPcJyuRWRCjFyG3-wRgmEdZmrn9tlBTvD31u8Q"
4591
+ "x": "wS76C0bWq0ejgwsAlHq0imuG2HoW15ZeLhw9icbKbiA"
3626
4592
  },
3627
4593
  "published_in": "the suite's directory"
3628
4594
  }
3629
4595
  }
3630
4596
  },
3631
- "evil.example": {
4597
+ "GET https://good.example/l3": {
3632
4598
  "kind": "crawlcheck-decision",
3633
4599
  "v": 1,
3634
4600
  "decided_at": "2026-10-10T15:59:00.000Z",
3635
4601
  "expires_at": "2026-10-11T15:59:00.000Z",
3636
4602
  "clock_skew_s": 300,
3637
4603
  "nonce": "ccguard-acceptance-0001",
3638
- "domain": "evil.example",
4604
+ "domain": "good.example",
3639
4605
  "action": "read",
3640
4606
  "agent": null,
3641
4607
  "template": null,
@@ -3652,8 +4618,8 @@
3652
4618
  "version": "pf4",
3653
4619
  "rules_sha256": "18dd5636e0896692ab518050cb401744edea2e6f1086dff94fead314959bdc3e"
3654
4620
  },
3655
- "decision": "block",
3656
- "base_decision": "block",
4621
+ "decision": "allow",
4622
+ "base_decision": "allow",
3657
4623
  "human_confirmation_required": false,
3658
4624
  "reason_codes": [
3659
4625
  "resolve.actions.read"
@@ -3661,7 +4627,7 @@
3661
4627
  "steps": [
3662
4628
  {
3663
4629
  "rule": "resolve.actions.read",
3664
- "effect": "block",
4630
+ "effect": "allow",
3665
4631
  "why": "suite fixture"
3666
4632
  }
3667
4633
  ],
@@ -3672,69 +4638,34 @@
3672
4638
  },
3673
4639
  "resolve": {
3674
4640
  "sha256": "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
3675
- "kid": "xrog-5dLQHQuXmIsVCTFRFfPSzLVonFLRoWdifn1AmE",
4641
+ "kid": "erziRf8en6nlChFs1zqtfOHoOyD2GyiXW98t3SYpLuk",
3676
4642
  "leaf_hash": "cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc"
3677
4643
  },
3678
- "sha256": "da1b746cfc0ec51e4a6efcefc5e63d824652ef99c21828054d237df6055ae9e9",
4644
+ "operation": {
4645
+ "method": "GET",
4646
+ "url": "https://good.example/l3"
4647
+ },
4648
+ "sha256": "89b576de27f6c92f77d8772df39cbc713e3118aa39aff961fad41c6c53a43399",
3679
4649
  "signature": {
3680
4650
  "v": 1,
3681
4651
  "alg": "Ed25519",
3682
- "kid": "xrog-5dLQHQuXmIsVCTFRFfPSzLVonFLRoWdifn1AmE",
4652
+ "kid": "erziRf8en6nlChFs1zqtfOHoOyD2GyiXW98t3SYpLuk",
3683
4653
  "over": "sha256",
3684
- "message": "crawlcheck-data-v1\nda1b746cfc0ec51e4a6efcefc5e63d824652ef99c21828054d237df6055ae9e9",
3685
- "sig": "BZFgavq6NoUbGwIS_A8Vdbge-EGp4hi5HXxy396I5UuHvjukMIcnXrae6hwPDmY_UIdpGWTHz8fMyW0FAEvODw",
4654
+ "message": "crawlcheck-data-v1\n89b576de27f6c92f77d8772df39cbc713e3118aa39aff961fad41c6c53a43399",
4655
+ "sig": "cTnfFEj39tWezcclTaBIgy8MLqw3aaQyoDk_BCM0TZ5VXFu6WpGyeUcGf97tpK-FFMKtdcIDqp3rIfsckXc0DQ",
3686
4656
  "signed_at": "2026-10-10T15:59:00.000Z",
3687
4657
  "key": {
3688
- "kid": "xrog-5dLQHQuXmIsVCTFRFfPSzLVonFLRoWdifn1AmE",
4658
+ "kid": "erziRf8en6nlChFs1zqtfOHoOyD2GyiXW98t3SYpLuk",
3689
4659
  "jwk": {
3690
4660
  "kty": "OKP",
3691
4661
  "crv": "Ed25519",
3692
- "x": "_EeVevPcJyuRWRCjFyG3-wRgmEdZmrn9tlBTvD31u8Q"
4662
+ "x": "wS76C0bWq0ejgwsAlHq0imuG2HoW15ZeLhw9icbKbiA"
3693
4663
  },
3694
4664
  "published_in": "the suite's directory"
3695
4665
  }
3696
4666
  }
3697
- }
3698
- }
3699
- },
3700
- "sites": {
3701
- "https://good.example/go": {
3702
- "status": 301,
3703
- "location": "https://also-good.example/y"
3704
- },
3705
- "https://also-good.example/y": {
3706
- "status": 200,
3707
- "body": "ok"
3708
- }
3709
- },
3710
- "expect": {
3711
- "proceed": true,
3712
- "fetched": [
3713
- "https://good.example/go",
3714
- "https://also-good.example/y"
3715
- ],
3716
- "receipt_header_to": [
3717
- "good.example",
3718
- "also-good.example"
3719
- ]
3720
- }
3721
- },
3722
- {
3723
- "id": "redirect-relative",
3724
- "title": "a relative redirect stays on the checked domain",
3725
- "why": "",
3726
- "request": {
3727
- "url": "https://good.example/a",
3728
- "action": "read",
3729
- "allow_warn": false,
3730
- "confirm": null,
3731
- "nonce": "ccguard-acceptance-0001",
3732
- "now": "2026-10-10T16:00:00.000Z",
3733
- "max_hops": 10
3734
- },
3735
- "crawlcheck": {
3736
- "by_domain": {
3737
- "good.example": {
4667
+ },
4668
+ "GET https://good.example/l4": {
3738
4669
  "kind": "crawlcheck-decision",
3739
4670
  "v": 1,
3740
4671
  "decided_at": "2026-10-10T15:59:00.000Z",
@@ -3778,37 +4709,41 @@
3778
4709
  },
3779
4710
  "resolve": {
3780
4711
  "sha256": "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
3781
- "kid": "xrog-5dLQHQuXmIsVCTFRFfPSzLVonFLRoWdifn1AmE",
4712
+ "kid": "erziRf8en6nlChFs1zqtfOHoOyD2GyiXW98t3SYpLuk",
3782
4713
  "leaf_hash": "cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc"
3783
4714
  },
3784
- "sha256": "538189facc04db817956a840415c602c48cf9c29ce7b626fbd2d6cd2db3a2b72",
4715
+ "operation": {
4716
+ "method": "GET",
4717
+ "url": "https://good.example/l4"
4718
+ },
4719
+ "sha256": "35638449b08fb3fc560910c3a72af8a7c3e7e85d42b165858c69256f710556c7",
3785
4720
  "signature": {
3786
4721
  "v": 1,
3787
4722
  "alg": "Ed25519",
3788
- "kid": "xrog-5dLQHQuXmIsVCTFRFfPSzLVonFLRoWdifn1AmE",
4723
+ "kid": "erziRf8en6nlChFs1zqtfOHoOyD2GyiXW98t3SYpLuk",
3789
4724
  "over": "sha256",
3790
- "message": "crawlcheck-data-v1\n538189facc04db817956a840415c602c48cf9c29ce7b626fbd2d6cd2db3a2b72",
3791
- "sig": "kebBznICRjh4gEDCOyvn4YRYaSxkCj4cvsRPWaC7NCCfPrFKgCiZHrVAFhODv_hWa7OfWpNvWME0Tio0W5UXAQ",
4725
+ "message": "crawlcheck-data-v1\n35638449b08fb3fc560910c3a72af8a7c3e7e85d42b165858c69256f710556c7",
4726
+ "sig": "Uw2Df5CPziRtURFlabQI2-ZFVBSKYiU2uYZJctSfXr-Z7uit1lKdls5Y_yUf7b2TdPyAtDNNaemxIEgbHbasAw",
3792
4727
  "signed_at": "2026-10-10T15:59:00.000Z",
3793
4728
  "key": {
3794
- "kid": "xrog-5dLQHQuXmIsVCTFRFfPSzLVonFLRoWdifn1AmE",
4729
+ "kid": "erziRf8en6nlChFs1zqtfOHoOyD2GyiXW98t3SYpLuk",
3795
4730
  "jwk": {
3796
4731
  "kty": "OKP",
3797
4732
  "crv": "Ed25519",
3798
- "x": "_EeVevPcJyuRWRCjFyG3-wRgmEdZmrn9tlBTvD31u8Q"
4733
+ "x": "wS76C0bWq0ejgwsAlHq0imuG2HoW15ZeLhw9icbKbiA"
3799
4734
  },
3800
4735
  "published_in": "the suite's directory"
3801
4736
  }
3802
4737
  }
3803
4738
  },
3804
- "also-good.example": {
4739
+ "GET https://good.example/l5": {
3805
4740
  "kind": "crawlcheck-decision",
3806
4741
  "v": 1,
3807
4742
  "decided_at": "2026-10-10T15:59:00.000Z",
3808
4743
  "expires_at": "2026-10-11T15:59:00.000Z",
3809
4744
  "clock_skew_s": 300,
3810
4745
  "nonce": "ccguard-acceptance-0001",
3811
- "domain": "also-good.example",
4746
+ "domain": "good.example",
3812
4747
  "action": "read",
3813
4748
  "agent": null,
3814
4749
  "template": null,
@@ -3845,37 +4780,41 @@
3845
4780
  },
3846
4781
  "resolve": {
3847
4782
  "sha256": "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
3848
- "kid": "xrog-5dLQHQuXmIsVCTFRFfPSzLVonFLRoWdifn1AmE",
4783
+ "kid": "erziRf8en6nlChFs1zqtfOHoOyD2GyiXW98t3SYpLuk",
3849
4784
  "leaf_hash": "cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc"
3850
4785
  },
3851
- "sha256": "397e79eadb3c6457282bf8ffc33b5840cada8edbfb2e3c56ddc8bada2fd62ee1",
4786
+ "operation": {
4787
+ "method": "GET",
4788
+ "url": "https://good.example/l5"
4789
+ },
4790
+ "sha256": "f2333cd4673aa18ca81cf7dee60722e1484d092b68809fed646efb6a3b4ed7ba",
3852
4791
  "signature": {
3853
4792
  "v": 1,
3854
4793
  "alg": "Ed25519",
3855
- "kid": "xrog-5dLQHQuXmIsVCTFRFfPSzLVonFLRoWdifn1AmE",
4794
+ "kid": "erziRf8en6nlChFs1zqtfOHoOyD2GyiXW98t3SYpLuk",
3856
4795
  "over": "sha256",
3857
- "message": "crawlcheck-data-v1\n397e79eadb3c6457282bf8ffc33b5840cada8edbfb2e3c56ddc8bada2fd62ee1",
3858
- "sig": "CR_y7ei6pqwnAASl9hRtXwus3SNLpNzozCzHf_DyGwPxQilYPdubDDnTjnZDqvPDS49-0q-Ygt2mtpUbIQh0CQ",
4796
+ "message": "crawlcheck-data-v1\nf2333cd4673aa18ca81cf7dee60722e1484d092b68809fed646efb6a3b4ed7ba",
4797
+ "sig": "gSfmq1mXnYG8107SjeTZJO_GIHribnxCSNmSKy9QSAFVc0ZV4X1bFYnVa7_G_M5iqFvemTp8W2uvSlD9hNN2CQ",
3859
4798
  "signed_at": "2026-10-10T15:59:00.000Z",
3860
4799
  "key": {
3861
- "kid": "xrog-5dLQHQuXmIsVCTFRFfPSzLVonFLRoWdifn1AmE",
4800
+ "kid": "erziRf8en6nlChFs1zqtfOHoOyD2GyiXW98t3SYpLuk",
3862
4801
  "jwk": {
3863
4802
  "kty": "OKP",
3864
4803
  "crv": "Ed25519",
3865
- "x": "_EeVevPcJyuRWRCjFyG3-wRgmEdZmrn9tlBTvD31u8Q"
4804
+ "x": "wS76C0bWq0ejgwsAlHq0imuG2HoW15ZeLhw9icbKbiA"
3866
4805
  },
3867
4806
  "published_in": "the suite's directory"
3868
4807
  }
3869
4808
  }
3870
4809
  },
3871
- "evil.example": {
4810
+ "GET https://good.example/l6": {
3872
4811
  "kind": "crawlcheck-decision",
3873
4812
  "v": 1,
3874
4813
  "decided_at": "2026-10-10T15:59:00.000Z",
3875
4814
  "expires_at": "2026-10-11T15:59:00.000Z",
3876
4815
  "clock_skew_s": 300,
3877
4816
  "nonce": "ccguard-acceptance-0001",
3878
- "domain": "evil.example",
4817
+ "domain": "good.example",
3879
4818
  "action": "read",
3880
4819
  "agent": null,
3881
4820
  "template": null,
@@ -3892,8 +4831,8 @@
3892
4831
  "version": "pf4",
3893
4832
  "rules_sha256": "18dd5636e0896692ab518050cb401744edea2e6f1086dff94fead314959bdc3e"
3894
4833
  },
3895
- "decision": "block",
3896
- "base_decision": "block",
4834
+ "decision": "allow",
4835
+ "base_decision": "allow",
3897
4836
  "human_confirmation_required": false,
3898
4837
  "reason_codes": [
3899
4838
  "resolve.actions.read"
@@ -3901,7 +4840,7 @@
3901
4840
  "steps": [
3902
4841
  {
3903
4842
  "rule": "resolve.actions.read",
3904
- "effect": "block",
4843
+ "effect": "allow",
3905
4844
  "why": "suite fixture"
3906
4845
  }
3907
4846
  ],
@@ -3912,65 +4851,34 @@
3912
4851
  },
3913
4852
  "resolve": {
3914
4853
  "sha256": "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
3915
- "kid": "xrog-5dLQHQuXmIsVCTFRFfPSzLVonFLRoWdifn1AmE",
4854
+ "kid": "erziRf8en6nlChFs1zqtfOHoOyD2GyiXW98t3SYpLuk",
3916
4855
  "leaf_hash": "cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc"
3917
4856
  },
3918
- "sha256": "da1b746cfc0ec51e4a6efcefc5e63d824652ef99c21828054d237df6055ae9e9",
4857
+ "operation": {
4858
+ "method": "GET",
4859
+ "url": "https://good.example/l6"
4860
+ },
4861
+ "sha256": "8de4ae7e0af5f9fbd89dec5295d5cfa65580f4e34d0dde9fdde311f00f71e8ae",
3919
4862
  "signature": {
3920
4863
  "v": 1,
3921
4864
  "alg": "Ed25519",
3922
- "kid": "xrog-5dLQHQuXmIsVCTFRFfPSzLVonFLRoWdifn1AmE",
4865
+ "kid": "erziRf8en6nlChFs1zqtfOHoOyD2GyiXW98t3SYpLuk",
3923
4866
  "over": "sha256",
3924
- "message": "crawlcheck-data-v1\nda1b746cfc0ec51e4a6efcefc5e63d824652ef99c21828054d237df6055ae9e9",
3925
- "sig": "BZFgavq6NoUbGwIS_A8Vdbge-EGp4hi5HXxy396I5UuHvjukMIcnXrae6hwPDmY_UIdpGWTHz8fMyW0FAEvODw",
4867
+ "message": "crawlcheck-data-v1\n8de4ae7e0af5f9fbd89dec5295d5cfa65580f4e34d0dde9fdde311f00f71e8ae",
4868
+ "sig": "G_gMrjaeOIpXsVv4Fh7weRUo5k-TXIMphez8tBfLnOuYgtoGrMY3BVphUfaLqP1-ueqKC51D1QxrV2adeaSXCg",
3926
4869
  "signed_at": "2026-10-10T15:59:00.000Z",
3927
4870
  "key": {
3928
- "kid": "xrog-5dLQHQuXmIsVCTFRFfPSzLVonFLRoWdifn1AmE",
4871
+ "kid": "erziRf8en6nlChFs1zqtfOHoOyD2GyiXW98t3SYpLuk",
3929
4872
  "jwk": {
3930
4873
  "kty": "OKP",
3931
4874
  "crv": "Ed25519",
3932
- "x": "_EeVevPcJyuRWRCjFyG3-wRgmEdZmrn9tlBTvD31u8Q"
4875
+ "x": "wS76C0bWq0ejgwsAlHq0imuG2HoW15ZeLhw9icbKbiA"
3933
4876
  },
3934
4877
  "published_in": "the suite's directory"
3935
4878
  }
3936
4879
  }
3937
- }
3938
- }
3939
- },
3940
- "sites": {
3941
- "https://good.example/a": {
3942
- "status": 307,
3943
- "location": "/b"
3944
- },
3945
- "https://good.example/b": {
3946
- "status": 200,
3947
- "body": "ok"
3948
- }
3949
- },
3950
- "expect": {
3951
- "proceed": true,
3952
- "fetched": [
3953
- "https://good.example/a",
3954
- "https://good.example/b"
3955
- ]
3956
- }
3957
- },
3958
- {
3959
- "id": "redirect-scheme",
3960
- "title": "a redirect to a file: URL",
3961
- "why": "only http(s)",
3962
- "request": {
3963
- "url": "https://good.example/a",
3964
- "action": "read",
3965
- "allow_warn": false,
3966
- "confirm": null,
3967
- "nonce": "ccguard-acceptance-0001",
3968
- "now": "2026-10-10T16:00:00.000Z",
3969
- "max_hops": 10
3970
- },
3971
- "crawlcheck": {
3972
- "by_domain": {
3973
- "good.example": {
4880
+ },
4881
+ "GET https://good.example/l7": {
3974
4882
  "kind": "crawlcheck-decision",
3975
4883
  "v": 1,
3976
4884
  "decided_at": "2026-10-10T15:59:00.000Z",
@@ -4014,37 +4922,41 @@
4014
4922
  },
4015
4923
  "resolve": {
4016
4924
  "sha256": "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
4017
- "kid": "xrog-5dLQHQuXmIsVCTFRFfPSzLVonFLRoWdifn1AmE",
4925
+ "kid": "erziRf8en6nlChFs1zqtfOHoOyD2GyiXW98t3SYpLuk",
4018
4926
  "leaf_hash": "cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc"
4019
4927
  },
4020
- "sha256": "538189facc04db817956a840415c602c48cf9c29ce7b626fbd2d6cd2db3a2b72",
4928
+ "operation": {
4929
+ "method": "GET",
4930
+ "url": "https://good.example/l7"
4931
+ },
4932
+ "sha256": "a6a148364e73574c574313caa4643259d48249def97a3c9966d219ada13ee46a",
4021
4933
  "signature": {
4022
4934
  "v": 1,
4023
4935
  "alg": "Ed25519",
4024
- "kid": "xrog-5dLQHQuXmIsVCTFRFfPSzLVonFLRoWdifn1AmE",
4936
+ "kid": "erziRf8en6nlChFs1zqtfOHoOyD2GyiXW98t3SYpLuk",
4025
4937
  "over": "sha256",
4026
- "message": "crawlcheck-data-v1\n538189facc04db817956a840415c602c48cf9c29ce7b626fbd2d6cd2db3a2b72",
4027
- "sig": "kebBznICRjh4gEDCOyvn4YRYaSxkCj4cvsRPWaC7NCCfPrFKgCiZHrVAFhODv_hWa7OfWpNvWME0Tio0W5UXAQ",
4938
+ "message": "crawlcheck-data-v1\na6a148364e73574c574313caa4643259d48249def97a3c9966d219ada13ee46a",
4939
+ "sig": "5LeHKn-CpsclCgcYAGXRW7ChaKK30S_mYEPnIK9A1zVtD-OUT5GETFmh_Jy-EMYkIau_SbCJKuqIcKExKdVtCw",
4028
4940
  "signed_at": "2026-10-10T15:59:00.000Z",
4029
4941
  "key": {
4030
- "kid": "xrog-5dLQHQuXmIsVCTFRFfPSzLVonFLRoWdifn1AmE",
4942
+ "kid": "erziRf8en6nlChFs1zqtfOHoOyD2GyiXW98t3SYpLuk",
4031
4943
  "jwk": {
4032
4944
  "kty": "OKP",
4033
4945
  "crv": "Ed25519",
4034
- "x": "_EeVevPcJyuRWRCjFyG3-wRgmEdZmrn9tlBTvD31u8Q"
4946
+ "x": "wS76C0bWq0ejgwsAlHq0imuG2HoW15ZeLhw9icbKbiA"
4035
4947
  },
4036
4948
  "published_in": "the suite's directory"
4037
4949
  }
4038
4950
  }
4039
4951
  },
4040
- "also-good.example": {
4952
+ "GET https://good.example/l8": {
4041
4953
  "kind": "crawlcheck-decision",
4042
4954
  "v": 1,
4043
4955
  "decided_at": "2026-10-10T15:59:00.000Z",
4044
4956
  "expires_at": "2026-10-11T15:59:00.000Z",
4045
4957
  "clock_skew_s": 300,
4046
4958
  "nonce": "ccguard-acceptance-0001",
4047
- "domain": "also-good.example",
4959
+ "domain": "good.example",
4048
4960
  "action": "read",
4049
4961
  "agent": null,
4050
4962
  "template": null,
@@ -4081,37 +4993,41 @@
4081
4993
  },
4082
4994
  "resolve": {
4083
4995
  "sha256": "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
4084
- "kid": "xrog-5dLQHQuXmIsVCTFRFfPSzLVonFLRoWdifn1AmE",
4996
+ "kid": "erziRf8en6nlChFs1zqtfOHoOyD2GyiXW98t3SYpLuk",
4085
4997
  "leaf_hash": "cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc"
4086
4998
  },
4087
- "sha256": "397e79eadb3c6457282bf8ffc33b5840cada8edbfb2e3c56ddc8bada2fd62ee1",
4999
+ "operation": {
5000
+ "method": "GET",
5001
+ "url": "https://good.example/l8"
5002
+ },
5003
+ "sha256": "b77b5aabb173b4af235b50898269001b7aff374f8b45160ac5474bc18b34c048",
4088
5004
  "signature": {
4089
5005
  "v": 1,
4090
5006
  "alg": "Ed25519",
4091
- "kid": "xrog-5dLQHQuXmIsVCTFRFfPSzLVonFLRoWdifn1AmE",
5007
+ "kid": "erziRf8en6nlChFs1zqtfOHoOyD2GyiXW98t3SYpLuk",
4092
5008
  "over": "sha256",
4093
- "message": "crawlcheck-data-v1\n397e79eadb3c6457282bf8ffc33b5840cada8edbfb2e3c56ddc8bada2fd62ee1",
4094
- "sig": "CR_y7ei6pqwnAASl9hRtXwus3SNLpNzozCzHf_DyGwPxQilYPdubDDnTjnZDqvPDS49-0q-Ygt2mtpUbIQh0CQ",
5009
+ "message": "crawlcheck-data-v1\nb77b5aabb173b4af235b50898269001b7aff374f8b45160ac5474bc18b34c048",
5010
+ "sig": "g_Zelo7Yr1ncXfGeMMEApJXb1Iwjr8EGpn6Q4buO_ETquTgqkUG6llK3m8BCTw6pjWqSbHjDzO_v3awxZdLdCQ",
4095
5011
  "signed_at": "2026-10-10T15:59:00.000Z",
4096
5012
  "key": {
4097
- "kid": "xrog-5dLQHQuXmIsVCTFRFfPSzLVonFLRoWdifn1AmE",
5013
+ "kid": "erziRf8en6nlChFs1zqtfOHoOyD2GyiXW98t3SYpLuk",
4098
5014
  "jwk": {
4099
5015
  "kty": "OKP",
4100
5016
  "crv": "Ed25519",
4101
- "x": "_EeVevPcJyuRWRCjFyG3-wRgmEdZmrn9tlBTvD31u8Q"
5017
+ "x": "wS76C0bWq0ejgwsAlHq0imuG2HoW15ZeLhw9icbKbiA"
4102
5018
  },
4103
5019
  "published_in": "the suite's directory"
4104
5020
  }
4105
5021
  }
4106
5022
  },
4107
- "evil.example": {
5023
+ "GET https://good.example/l9": {
4108
5024
  "kind": "crawlcheck-decision",
4109
5025
  "v": 1,
4110
5026
  "decided_at": "2026-10-10T15:59:00.000Z",
4111
5027
  "expires_at": "2026-10-11T15:59:00.000Z",
4112
5028
  "clock_skew_s": 300,
4113
5029
  "nonce": "ccguard-acceptance-0001",
4114
- "domain": "evil.example",
5030
+ "domain": "good.example",
4115
5031
  "action": "read",
4116
5032
  "agent": null,
4117
5033
  "template": null,
@@ -4128,8 +5044,8 @@
4128
5044
  "version": "pf4",
4129
5045
  "rules_sha256": "18dd5636e0896692ab518050cb401744edea2e6f1086dff94fead314959bdc3e"
4130
5046
  },
4131
- "decision": "block",
4132
- "base_decision": "block",
5047
+ "decision": "allow",
5048
+ "base_decision": "allow",
4133
5049
  "human_confirmation_required": false,
4134
5050
  "reason_codes": [
4135
5051
  "resolve.actions.read"
@@ -4137,7 +5053,7 @@
4137
5053
  "steps": [
4138
5054
  {
4139
5055
  "rule": "resolve.actions.read",
4140
- "effect": "block",
5056
+ "effect": "allow",
4141
5057
  "why": "suite fixture"
4142
5058
  }
4143
5059
  ],
@@ -4148,60 +5064,34 @@
4148
5064
  },
4149
5065
  "resolve": {
4150
5066
  "sha256": "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
4151
- "kid": "xrog-5dLQHQuXmIsVCTFRFfPSzLVonFLRoWdifn1AmE",
5067
+ "kid": "erziRf8en6nlChFs1zqtfOHoOyD2GyiXW98t3SYpLuk",
4152
5068
  "leaf_hash": "cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc"
4153
5069
  },
4154
- "sha256": "da1b746cfc0ec51e4a6efcefc5e63d824652ef99c21828054d237df6055ae9e9",
5070
+ "operation": {
5071
+ "method": "GET",
5072
+ "url": "https://good.example/l9"
5073
+ },
5074
+ "sha256": "0cb8b93d423c4ef69fbd9866689b46e80c0d3f308839f7ecbde679acb891b9b8",
4155
5075
  "signature": {
4156
5076
  "v": 1,
4157
5077
  "alg": "Ed25519",
4158
- "kid": "xrog-5dLQHQuXmIsVCTFRFfPSzLVonFLRoWdifn1AmE",
5078
+ "kid": "erziRf8en6nlChFs1zqtfOHoOyD2GyiXW98t3SYpLuk",
4159
5079
  "over": "sha256",
4160
- "message": "crawlcheck-data-v1\nda1b746cfc0ec51e4a6efcefc5e63d824652ef99c21828054d237df6055ae9e9",
4161
- "sig": "BZFgavq6NoUbGwIS_A8Vdbge-EGp4hi5HXxy396I5UuHvjukMIcnXrae6hwPDmY_UIdpGWTHz8fMyW0FAEvODw",
5080
+ "message": "crawlcheck-data-v1\n0cb8b93d423c4ef69fbd9866689b46e80c0d3f308839f7ecbde679acb891b9b8",
5081
+ "sig": "r_HNGRTbituhqq4mZvoOssFqxE3SD5i0MH9S0YBzroHycQyBsp6kYt1Hr2F5I3HTsjWCJVX1Ns5LRNYPBgcbAw",
4162
5082
  "signed_at": "2026-10-10T15:59:00.000Z",
4163
5083
  "key": {
4164
- "kid": "xrog-5dLQHQuXmIsVCTFRFfPSzLVonFLRoWdifn1AmE",
5084
+ "kid": "erziRf8en6nlChFs1zqtfOHoOyD2GyiXW98t3SYpLuk",
4165
5085
  "jwk": {
4166
5086
  "kty": "OKP",
4167
5087
  "crv": "Ed25519",
4168
- "x": "_EeVevPcJyuRWRCjFyG3-wRgmEdZmrn9tlBTvD31u8Q"
5088
+ "x": "wS76C0bWq0ejgwsAlHq0imuG2HoW15ZeLhw9icbKbiA"
4169
5089
  },
4170
5090
  "published_in": "the suite's directory"
4171
5091
  }
4172
5092
  }
4173
- }
4174
- }
4175
- },
4176
- "sites": {
4177
- "https://good.example/a": {
4178
- "status": 302,
4179
- "location": "file:///etc/passwd"
4180
- }
4181
- },
4182
- "expect": {
4183
- "proceed": false,
4184
- "fetched": [
4185
- "https://good.example/a"
4186
- ]
4187
- }
4188
- },
4189
- {
4190
- "id": "redirect-loop",
4191
- "title": "more than the hop limit",
4192
- "why": "at most 10 redirects",
4193
- "request": {
4194
- "url": "https://good.example/l0",
4195
- "action": "read",
4196
- "allow_warn": false,
4197
- "confirm": null,
4198
- "nonce": "ccguard-acceptance-0001",
4199
- "now": "2026-10-10T16:00:00.000Z",
4200
- "max_hops": 10
4201
- },
4202
- "crawlcheck": {
4203
- "by_domain": {
4204
- "good.example": {
5093
+ },
5094
+ "GET https://good.example/l10": {
4205
5095
  "kind": "crawlcheck-decision",
4206
5096
  "v": 1,
4207
5097
  "decided_at": "2026-10-10T15:59:00.000Z",
@@ -4245,37 +5135,41 @@
4245
5135
  },
4246
5136
  "resolve": {
4247
5137
  "sha256": "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
4248
- "kid": "xrog-5dLQHQuXmIsVCTFRFfPSzLVonFLRoWdifn1AmE",
5138
+ "kid": "erziRf8en6nlChFs1zqtfOHoOyD2GyiXW98t3SYpLuk",
4249
5139
  "leaf_hash": "cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc"
4250
5140
  },
4251
- "sha256": "538189facc04db817956a840415c602c48cf9c29ce7b626fbd2d6cd2db3a2b72",
5141
+ "operation": {
5142
+ "method": "GET",
5143
+ "url": "https://good.example/l10"
5144
+ },
5145
+ "sha256": "cbd508a7f0633e1d345dbbb77b90753df65a434acdb1d0c9f746abd331da0c8d",
4252
5146
  "signature": {
4253
5147
  "v": 1,
4254
5148
  "alg": "Ed25519",
4255
- "kid": "xrog-5dLQHQuXmIsVCTFRFfPSzLVonFLRoWdifn1AmE",
5149
+ "kid": "erziRf8en6nlChFs1zqtfOHoOyD2GyiXW98t3SYpLuk",
4256
5150
  "over": "sha256",
4257
- "message": "crawlcheck-data-v1\n538189facc04db817956a840415c602c48cf9c29ce7b626fbd2d6cd2db3a2b72",
4258
- "sig": "kebBznICRjh4gEDCOyvn4YRYaSxkCj4cvsRPWaC7NCCfPrFKgCiZHrVAFhODv_hWa7OfWpNvWME0Tio0W5UXAQ",
5151
+ "message": "crawlcheck-data-v1\ncbd508a7f0633e1d345dbbb77b90753df65a434acdb1d0c9f746abd331da0c8d",
5152
+ "sig": "zAmJIpb6CC4Q49W3RoaOiC4nkBfzGs88oguT4A9nWcPII3LALglyFx_I2kyX0Uktx7i-YBW1oBIzr1V6-hWnBQ",
4259
5153
  "signed_at": "2026-10-10T15:59:00.000Z",
4260
5154
  "key": {
4261
- "kid": "xrog-5dLQHQuXmIsVCTFRFfPSzLVonFLRoWdifn1AmE",
5155
+ "kid": "erziRf8en6nlChFs1zqtfOHoOyD2GyiXW98t3SYpLuk",
4262
5156
  "jwk": {
4263
5157
  "kty": "OKP",
4264
5158
  "crv": "Ed25519",
4265
- "x": "_EeVevPcJyuRWRCjFyG3-wRgmEdZmrn9tlBTvD31u8Q"
5159
+ "x": "wS76C0bWq0ejgwsAlHq0imuG2HoW15ZeLhw9icbKbiA"
4266
5160
  },
4267
5161
  "published_in": "the suite's directory"
4268
5162
  }
4269
5163
  }
4270
5164
  },
4271
- "also-good.example": {
5165
+ "GET https://good.example/l11": {
4272
5166
  "kind": "crawlcheck-decision",
4273
5167
  "v": 1,
4274
5168
  "decided_at": "2026-10-10T15:59:00.000Z",
4275
5169
  "expires_at": "2026-10-11T15:59:00.000Z",
4276
5170
  "clock_skew_s": 300,
4277
5171
  "nonce": "ccguard-acceptance-0001",
4278
- "domain": "also-good.example",
5172
+ "domain": "good.example",
4279
5173
  "action": "read",
4280
5174
  "agent": null,
4281
5175
  "template": null,
@@ -4312,37 +5206,41 @@
4312
5206
  },
4313
5207
  "resolve": {
4314
5208
  "sha256": "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
4315
- "kid": "xrog-5dLQHQuXmIsVCTFRFfPSzLVonFLRoWdifn1AmE",
5209
+ "kid": "erziRf8en6nlChFs1zqtfOHoOyD2GyiXW98t3SYpLuk",
4316
5210
  "leaf_hash": "cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc"
4317
5211
  },
4318
- "sha256": "397e79eadb3c6457282bf8ffc33b5840cada8edbfb2e3c56ddc8bada2fd62ee1",
5212
+ "operation": {
5213
+ "method": "GET",
5214
+ "url": "https://good.example/l11"
5215
+ },
5216
+ "sha256": "c390bb5309cff341dac03646a7931438a1b0bcc3d5173e2cd0e4ed05e2c80b9c",
4319
5217
  "signature": {
4320
5218
  "v": 1,
4321
5219
  "alg": "Ed25519",
4322
- "kid": "xrog-5dLQHQuXmIsVCTFRFfPSzLVonFLRoWdifn1AmE",
5220
+ "kid": "erziRf8en6nlChFs1zqtfOHoOyD2GyiXW98t3SYpLuk",
4323
5221
  "over": "sha256",
4324
- "message": "crawlcheck-data-v1\n397e79eadb3c6457282bf8ffc33b5840cada8edbfb2e3c56ddc8bada2fd62ee1",
4325
- "sig": "CR_y7ei6pqwnAASl9hRtXwus3SNLpNzozCzHf_DyGwPxQilYPdubDDnTjnZDqvPDS49-0q-Ygt2mtpUbIQh0CQ",
5222
+ "message": "crawlcheck-data-v1\nc390bb5309cff341dac03646a7931438a1b0bcc3d5173e2cd0e4ed05e2c80b9c",
5223
+ "sig": "vKZ8CbZmgwSEOydBRChbugaY9VN-4FwQIwIHHDfWKNOVj8C2FNkDzQTFuJE6DPNjwIk-jDwVAkL0s2DrOYFmCg",
4326
5224
  "signed_at": "2026-10-10T15:59:00.000Z",
4327
5225
  "key": {
4328
- "kid": "xrog-5dLQHQuXmIsVCTFRFfPSzLVonFLRoWdifn1AmE",
5226
+ "kid": "erziRf8en6nlChFs1zqtfOHoOyD2GyiXW98t3SYpLuk",
4329
5227
  "jwk": {
4330
5228
  "kty": "OKP",
4331
5229
  "crv": "Ed25519",
4332
- "x": "_EeVevPcJyuRWRCjFyG3-wRgmEdZmrn9tlBTvD31u8Q"
5230
+ "x": "wS76C0bWq0ejgwsAlHq0imuG2HoW15ZeLhw9icbKbiA"
4333
5231
  },
4334
5232
  "published_in": "the suite's directory"
4335
5233
  }
4336
5234
  }
4337
5235
  },
4338
- "evil.example": {
5236
+ "GET https://good.example/l12": {
4339
5237
  "kind": "crawlcheck-decision",
4340
5238
  "v": 1,
4341
5239
  "decided_at": "2026-10-10T15:59:00.000Z",
4342
5240
  "expires_at": "2026-10-11T15:59:00.000Z",
4343
5241
  "clock_skew_s": 300,
4344
5242
  "nonce": "ccguard-acceptance-0001",
4345
- "domain": "evil.example",
5243
+ "domain": "good.example",
4346
5244
  "action": "read",
4347
5245
  "agent": null,
4348
5246
  "template": null,
@@ -4359,8 +5257,8 @@
4359
5257
  "version": "pf4",
4360
5258
  "rules_sha256": "18dd5636e0896692ab518050cb401744edea2e6f1086dff94fead314959bdc3e"
4361
5259
  },
4362
- "decision": "block",
4363
- "base_decision": "block",
5260
+ "decision": "allow",
5261
+ "base_decision": "allow",
4364
5262
  "human_confirmation_required": false,
4365
5263
  "reason_codes": [
4366
5264
  "resolve.actions.read"
@@ -4368,7 +5266,7 @@
4368
5266
  "steps": [
4369
5267
  {
4370
5268
  "rule": "resolve.actions.read",
4371
- "effect": "block",
5269
+ "effect": "allow",
4372
5270
  "why": "suite fixture"
4373
5271
  }
4374
5272
  ],
@@ -4379,24 +5277,28 @@
4379
5277
  },
4380
5278
  "resolve": {
4381
5279
  "sha256": "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
4382
- "kid": "xrog-5dLQHQuXmIsVCTFRFfPSzLVonFLRoWdifn1AmE",
5280
+ "kid": "erziRf8en6nlChFs1zqtfOHoOyD2GyiXW98t3SYpLuk",
4383
5281
  "leaf_hash": "cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc"
4384
5282
  },
4385
- "sha256": "da1b746cfc0ec51e4a6efcefc5e63d824652ef99c21828054d237df6055ae9e9",
5283
+ "operation": {
5284
+ "method": "GET",
5285
+ "url": "https://good.example/l12"
5286
+ },
5287
+ "sha256": "64cf94c935eb682062bf601dc18ef77b97e988f6d7158094bea2d04873b4a791",
4386
5288
  "signature": {
4387
5289
  "v": 1,
4388
5290
  "alg": "Ed25519",
4389
- "kid": "xrog-5dLQHQuXmIsVCTFRFfPSzLVonFLRoWdifn1AmE",
5291
+ "kid": "erziRf8en6nlChFs1zqtfOHoOyD2GyiXW98t3SYpLuk",
4390
5292
  "over": "sha256",
4391
- "message": "crawlcheck-data-v1\nda1b746cfc0ec51e4a6efcefc5e63d824652ef99c21828054d237df6055ae9e9",
4392
- "sig": "BZFgavq6NoUbGwIS_A8Vdbge-EGp4hi5HXxy396I5UuHvjukMIcnXrae6hwPDmY_UIdpGWTHz8fMyW0FAEvODw",
5293
+ "message": "crawlcheck-data-v1\n64cf94c935eb682062bf601dc18ef77b97e988f6d7158094bea2d04873b4a791",
5294
+ "sig": "H8jKiObY2L1nbw_6YSQSxj3ZGWz6M9K6TqKeHCKbTwdylw7GeiAclOuhaR6kZBQa-T-18lwDmV0MT_kibYBiBw",
4393
5295
  "signed_at": "2026-10-10T15:59:00.000Z",
4394
5296
  "key": {
4395
- "kid": "xrog-5dLQHQuXmIsVCTFRFfPSzLVonFLRoWdifn1AmE",
5297
+ "kid": "erziRf8en6nlChFs1zqtfOHoOyD2GyiXW98t3SYpLuk",
4396
5298
  "jwk": {
4397
5299
  "kty": "OKP",
4398
5300
  "crv": "Ed25519",
4399
- "x": "_EeVevPcJyuRWRCjFyG3-wRgmEdZmrn9tlBTvD31u8Q"
5301
+ "x": "wS76C0bWq0ejgwsAlHq0imuG2HoW15ZeLhw9icbKbiA"
4400
5302
  },
4401
5303
  "published_in": "the suite's directory"
4402
5304
  }
@@ -4473,8 +5375,8 @@
4473
5375
  "max_hops": 10
4474
5376
  },
4475
5377
  "crawlcheck": {
4476
- "by_domain": {
4477
- "good.example": {
5378
+ "by_op": {
5379
+ "GET https://good.example/a": {
4478
5380
  "kind": "crawlcheck-decision",
4479
5381
  "v": 1,
4480
5382
  "decided_at": "2026-10-10T15:59:00.000Z",
@@ -4518,37 +5420,71 @@
4518
5420
  },
4519
5421
  "resolve": {
4520
5422
  "sha256": "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
4521
- "kid": "xrog-5dLQHQuXmIsVCTFRFfPSzLVonFLRoWdifn1AmE",
5423
+ "kid": "erziRf8en6nlChFs1zqtfOHoOyD2GyiXW98t3SYpLuk",
4522
5424
  "leaf_hash": "cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc"
4523
5425
  },
4524
- "sha256": "538189facc04db817956a840415c602c48cf9c29ce7b626fbd2d6cd2db3a2b72",
5426
+ "operation": {
5427
+ "method": "GET",
5428
+ "url": "https://good.example/a"
5429
+ },
5430
+ "sha256": "52ee5980ea3a45f938f9749bd6dd7fe4ea44baa3cc33ad68147da216f1ddbb7d",
4525
5431
  "signature": {
4526
5432
  "v": 1,
4527
5433
  "alg": "Ed25519",
4528
- "kid": "xrog-5dLQHQuXmIsVCTFRFfPSzLVonFLRoWdifn1AmE",
5434
+ "kid": "erziRf8en6nlChFs1zqtfOHoOyD2GyiXW98t3SYpLuk",
4529
5435
  "over": "sha256",
4530
- "message": "crawlcheck-data-v1\n538189facc04db817956a840415c602c48cf9c29ce7b626fbd2d6cd2db3a2b72",
4531
- "sig": "kebBznICRjh4gEDCOyvn4YRYaSxkCj4cvsRPWaC7NCCfPrFKgCiZHrVAFhODv_hWa7OfWpNvWME0Tio0W5UXAQ",
5436
+ "message": "crawlcheck-data-v1\n52ee5980ea3a45f938f9749bd6dd7fe4ea44baa3cc33ad68147da216f1ddbb7d",
5437
+ "sig": "e4FDzMvLaGkBv9iHlI0YMfxIax54-6tVvjUlFKKFTVV9dez1wkrHKVod9u2Ecs0RzIDY7H4dFncm8cQ0iRtyBw",
4532
5438
  "signed_at": "2026-10-10T15:59:00.000Z",
4533
5439
  "key": {
4534
- "kid": "xrog-5dLQHQuXmIsVCTFRFfPSzLVonFLRoWdifn1AmE",
5440
+ "kid": "erziRf8en6nlChFs1zqtfOHoOyD2GyiXW98t3SYpLuk",
4535
5441
  "jwk": {
4536
5442
  "kty": "OKP",
4537
5443
  "crv": "Ed25519",
4538
- "x": "_EeVevPcJyuRWRCjFyG3-wRgmEdZmrn9tlBTvD31u8Q"
5444
+ "x": "wS76C0bWq0ejgwsAlHq0imuG2HoW15ZeLhw9icbKbiA"
4539
5445
  },
4540
5446
  "published_in": "the suite's directory"
4541
5447
  }
4542
5448
  }
4543
- },
4544
- "also-good.example": {
5449
+ }
5450
+ }
5451
+ },
5452
+ "sites": {
5453
+ "https://good.example/a": {
5454
+ "status": 302,
5455
+ "location": "http://169.254.169.254/latest"
5456
+ }
5457
+ },
5458
+ "expect": {
5459
+ "proceed": false,
5460
+ "fetched": [
5461
+ "https://good.example/a"
5462
+ ]
5463
+ }
5464
+ },
5465
+ {
5466
+ "id": "fetch-receipt-reuse",
5467
+ "title": "a receipt for one page used for another page on the same domain",
5468
+ "why": "each hop asks again; the first page's receipt never covers the second",
5469
+ "request": {
5470
+ "url": "https://good.example/one",
5471
+ "action": "read",
5472
+ "allow_warn": false,
5473
+ "confirm": null,
5474
+ "nonce": "ccguard-acceptance-0001",
5475
+ "now": "2026-10-10T16:00:00.000Z",
5476
+ "max_hops": 10
5477
+ },
5478
+ "crawlcheck": {
5479
+ "by_op": {
5480
+ "GET https://good.example/one": {
4545
5481
  "kind": "crawlcheck-decision",
4546
5482
  "v": 1,
4547
5483
  "decided_at": "2026-10-10T15:59:00.000Z",
4548
5484
  "expires_at": "2026-10-11T15:59:00.000Z",
4549
5485
  "clock_skew_s": 300,
4550
5486
  "nonce": "ccguard-acceptance-0001",
4551
- "domain": "also-good.example",
5487
+ "domain": "good.example",
4552
5488
  "action": "read",
4553
5489
  "agent": null,
4554
5490
  "template": null,
@@ -4585,37 +5521,41 @@
4585
5521
  },
4586
5522
  "resolve": {
4587
5523
  "sha256": "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
4588
- "kid": "xrog-5dLQHQuXmIsVCTFRFfPSzLVonFLRoWdifn1AmE",
5524
+ "kid": "erziRf8en6nlChFs1zqtfOHoOyD2GyiXW98t3SYpLuk",
4589
5525
  "leaf_hash": "cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc"
4590
5526
  },
4591
- "sha256": "397e79eadb3c6457282bf8ffc33b5840cada8edbfb2e3c56ddc8bada2fd62ee1",
5527
+ "operation": {
5528
+ "method": "GET",
5529
+ "url": "https://good.example/one"
5530
+ },
5531
+ "sha256": "ad1a6a2cd99e0af57ff63f4d51a2192a320a738ed0e1d6b572b837f5db3418b6",
4592
5532
  "signature": {
4593
5533
  "v": 1,
4594
5534
  "alg": "Ed25519",
4595
- "kid": "xrog-5dLQHQuXmIsVCTFRFfPSzLVonFLRoWdifn1AmE",
5535
+ "kid": "erziRf8en6nlChFs1zqtfOHoOyD2GyiXW98t3SYpLuk",
4596
5536
  "over": "sha256",
4597
- "message": "crawlcheck-data-v1\n397e79eadb3c6457282bf8ffc33b5840cada8edbfb2e3c56ddc8bada2fd62ee1",
4598
- "sig": "CR_y7ei6pqwnAASl9hRtXwus3SNLpNzozCzHf_DyGwPxQilYPdubDDnTjnZDqvPDS49-0q-Ygt2mtpUbIQh0CQ",
5537
+ "message": "crawlcheck-data-v1\nad1a6a2cd99e0af57ff63f4d51a2192a320a738ed0e1d6b572b837f5db3418b6",
5538
+ "sig": "6QPLepy7EJRRLYvpIV0Zw8FhdT6GGF1yB7NewryRJC3Uo5aOzERkuhF0hOKXf1aS2Zm2LCr2ZwyxgUC794ZPDA",
4599
5539
  "signed_at": "2026-10-10T15:59:00.000Z",
4600
5540
  "key": {
4601
- "kid": "xrog-5dLQHQuXmIsVCTFRFfPSzLVonFLRoWdifn1AmE",
5541
+ "kid": "erziRf8en6nlChFs1zqtfOHoOyD2GyiXW98t3SYpLuk",
4602
5542
  "jwk": {
4603
5543
  "kty": "OKP",
4604
5544
  "crv": "Ed25519",
4605
- "x": "_EeVevPcJyuRWRCjFyG3-wRgmEdZmrn9tlBTvD31u8Q"
5545
+ "x": "wS76C0bWq0ejgwsAlHq0imuG2HoW15ZeLhw9icbKbiA"
4606
5546
  },
4607
5547
  "published_in": "the suite's directory"
4608
5548
  }
4609
5549
  }
4610
5550
  },
4611
- "evil.example": {
5551
+ "GET https://good.example/two": {
4612
5552
  "kind": "crawlcheck-decision",
4613
5553
  "v": 1,
4614
5554
  "decided_at": "2026-10-10T15:59:00.000Z",
4615
5555
  "expires_at": "2026-10-11T15:59:00.000Z",
4616
5556
  "clock_skew_s": 300,
4617
5557
  "nonce": "ccguard-acceptance-0001",
4618
- "domain": "evil.example",
5558
+ "domain": "good.example",
4619
5559
  "action": "read",
4620
5560
  "agent": null,
4621
5561
  "template": null,
@@ -4632,8 +5572,8 @@
4632
5572
  "version": "pf4",
4633
5573
  "rules_sha256": "18dd5636e0896692ab518050cb401744edea2e6f1086dff94fead314959bdc3e"
4634
5574
  },
4635
- "decision": "block",
4636
- "base_decision": "block",
5575
+ "decision": "allow",
5576
+ "base_decision": "allow",
4637
5577
  "human_confirmation_required": false,
4638
5578
  "reason_codes": [
4639
5579
  "resolve.actions.read"
@@ -4641,7 +5581,7 @@
4641
5581
  "steps": [
4642
5582
  {
4643
5583
  "rule": "resolve.actions.read",
4644
- "effect": "block",
5584
+ "effect": "allow",
4645
5585
  "why": "suite fixture"
4646
5586
  }
4647
5587
  ],
@@ -4652,24 +5592,28 @@
4652
5592
  },
4653
5593
  "resolve": {
4654
5594
  "sha256": "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
4655
- "kid": "xrog-5dLQHQuXmIsVCTFRFfPSzLVonFLRoWdifn1AmE",
5595
+ "kid": "erziRf8en6nlChFs1zqtfOHoOyD2GyiXW98t3SYpLuk",
4656
5596
  "leaf_hash": "cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc"
4657
5597
  },
4658
- "sha256": "da1b746cfc0ec51e4a6efcefc5e63d824652ef99c21828054d237df6055ae9e9",
5598
+ "operation": {
5599
+ "method": "GET",
5600
+ "url": "https://good.example/two"
5601
+ },
5602
+ "sha256": "7afbaa3ec9d6f1ad1d131fe7bbe348ec42e18fa77b5d6a576d6f175d0656666d",
4659
5603
  "signature": {
4660
5604
  "v": 1,
4661
5605
  "alg": "Ed25519",
4662
- "kid": "xrog-5dLQHQuXmIsVCTFRFfPSzLVonFLRoWdifn1AmE",
5606
+ "kid": "erziRf8en6nlChFs1zqtfOHoOyD2GyiXW98t3SYpLuk",
4663
5607
  "over": "sha256",
4664
- "message": "crawlcheck-data-v1\nda1b746cfc0ec51e4a6efcefc5e63d824652ef99c21828054d237df6055ae9e9",
4665
- "sig": "BZFgavq6NoUbGwIS_A8Vdbge-EGp4hi5HXxy396I5UuHvjukMIcnXrae6hwPDmY_UIdpGWTHz8fMyW0FAEvODw",
5608
+ "message": "crawlcheck-data-v1\n7afbaa3ec9d6f1ad1d131fe7bbe348ec42e18fa77b5d6a576d6f175d0656666d",
5609
+ "sig": "ZXc5PawmHmIXzLGyRmWl7vBd7GfTYS1h1UlZLuWXFzHInNe6kX2uQb08NNKj-0WLiBQycWWwf9Ff7LlZm2WMCQ",
4666
5610
  "signed_at": "2026-10-10T15:59:00.000Z",
4667
5611
  "key": {
4668
- "kid": "xrog-5dLQHQuXmIsVCTFRFfPSzLVonFLRoWdifn1AmE",
5612
+ "kid": "erziRf8en6nlChFs1zqtfOHoOyD2GyiXW98t3SYpLuk",
4669
5613
  "jwk": {
4670
5614
  "kty": "OKP",
4671
5615
  "crv": "Ed25519",
4672
- "x": "_EeVevPcJyuRWRCjFyG3-wRgmEdZmrn9tlBTvD31u8Q"
5616
+ "x": "wS76C0bWq0ejgwsAlHq0imuG2HoW15ZeLhw9icbKbiA"
4673
5617
  },
4674
5618
  "published_in": "the suite's directory"
4675
5619
  }
@@ -4678,15 +5622,24 @@
4678
5622
  }
4679
5623
  },
4680
5624
  "sites": {
4681
- "https://good.example/a": {
5625
+ "https://good.example/one": {
4682
5626
  "status": 302,
4683
- "location": "http://169.254.169.254/latest"
5627
+ "location": "/two"
5628
+ },
5629
+ "https://good.example/two": {
5630
+ "status": 200,
5631
+ "body": "ok"
4684
5632
  }
4685
5633
  },
4686
5634
  "expect": {
4687
- "proceed": false,
5635
+ "proceed": true,
4688
5636
  "fetched": [
4689
- "https://good.example/a"
5637
+ "https://good.example/one",
5638
+ "https://good.example/two"
5639
+ ],
5640
+ "receipt_header_to": [
5641
+ "good.example",
5642
+ "good.example"
4690
5643
  ]
4691
5644
  }
4692
5645
  }