atproto libraries implementation in ocaml

Update compliance reports

+1 -1
COMPLIANCE.md
··· 1 1 # AT Protocol Compliance Report 2 2 3 - **Generated:** 2025-12-28T15:06:07Z 3 + **Generated:** 2026-01-01T22:04:38Z 4 4 **Repository:** [https://github.com/gdiazlo/atproto](https://github.com/gdiazlo/atproto) 5 5 6 6 ## Summary
+1 -1
compliance-report.html
··· 129 129 </table> 130 130 </div> 131 131 <div class="meta"> 132 - <p>Generated: 2025-12-28T15:06:07Z</p> 132 + <p>Generated: 2026-01-01T22:04:38Z</p> 133 133 <p>Repository: <a href="https://github.com/gdiazlo/atproto">https://github.com/gdiazlo/atproto</a></p> 134 134 <p>Test fixtures from <a href="https://github.com/bluesky-social/atproto-interop-tests">AT Protocol Interoperability Tests</a></p> 135 135 </div>
+21 -21
compliance-report.json
··· 1 1 { 2 2 "title": "AT Protocol Compliance Report", 3 3 "version": "1.0.0", 4 - "generated_at": "2025-12-28T15:06:07Z", 4 + "generated_at": "2026-01-01T22:04:38Z", 5 5 "repository": "https://github.com/gdiazlo/atproto", 6 6 "total_tests": 494, 7 7 "total_passed": 494, 8 8 "total_failed": 0, 9 - "pass_rate": 100.0, 9 + "pass_rate": 100, 10 10 "suites": [ 11 11 { 12 12 "name": "Syntax Validation", ··· 14 14 "total": 448, 15 15 "passed": 448, 16 16 "failed": 0, 17 - "pass_rate": 100.0, 17 + "pass_rate": 100, 18 18 "categories": [ 19 19 { 20 20 "name": "Handle", ··· 23 23 "total": 119, 24 24 "passed": 119, 25 25 "failed": 0, 26 - "pass_rate": 100.0, 26 + "pass_rate": 100, 27 27 "results": [ 28 28 { 29 29 "input": "A.ISI.EDU", ··· 867 867 "total": 42, 868 868 "passed": 42, 869 869 "failed": 0, 870 - "pass_rate": 100.0, 870 + "pass_rate": 100, 871 871 "results": [ 872 872 { 873 873 "input": "did:method:val", ··· 1172 1172 "total": 52, 1173 1173 "passed": 52, 1174 1174 "failed": 0, 1175 - "pass_rate": 100.0, 1175 + "pass_rate": 100, 1176 1176 "results": [ 1177 1177 { 1178 1178 "input": "com.ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo.foo", ··· 1547 1547 "total": 13, 1548 1548 "passed": 13, 1549 1549 "failed": 0, 1550 - "pass_rate": 100.0, 1550 + "pass_rate": 100, 1551 1551 "results": [ 1552 1552 { 1553 1553 "input": "3jzfcijpj2z2a", ··· 1649 1649 "total": 27, 1650 1650 "passed": 27, 1651 1651 "failed": 0, 1652 - "pass_rate": 100.0, 1652 + "pass_rate": 100, 1653 1653 "results": [ 1654 1654 { 1655 1655 "input": "self", ··· 1849 1849 "total": 95, 1850 1850 "passed": 95, 1851 1851 "failed": 0, 1852 - "pass_rate": 100.0, 1852 + "pass_rate": 100, 1853 1853 "results": [ 1854 1854 { 1855 1855 "input": "at://did:plc:asdf123", ··· 2525 2525 "total": 79, 2526 2526 "passed": 79, 2527 2527 "failed": 0, 2528 - "pass_rate": 100.0, 2528 + "pass_rate": 100, 2529 2529 "results": [ 2530 2530 { 2531 2531 "input": "1985-04-12T23:20:50.123Z", ··· 3089 3089 "total": 21, 3090 3090 "passed": 21, 3091 3091 "failed": 0, 3092 - "pass_rate": 100.0, 3092 + "pass_rate": 100, 3093 3093 "results": [ 3094 3094 { 3095 3095 "input": "ja", ··· 3248 3248 "total": 12, 3249 3249 "passed": 12, 3250 3250 "failed": 0, 3251 - "pass_rate": 100.0, 3251 + "pass_rate": 100, 3252 3252 "categories": [ 3253 3253 { 3254 3254 "name": "Signature Verification", ··· 3257 3257 "total": 6, 3258 3258 "passed": 6, 3259 3259 "failed": 0, 3260 - "pass_rate": 100.0, 3260 + "pass_rate": 100, 3261 3261 "results": [ 3262 3262 { 3263 3263 "input": "valid P-256 key and signature, with low-S signature", ··· 3310 3310 "total": 1, 3311 3311 "passed": 1, 3312 3312 "failed": 0, 3313 - "pass_rate": 100.0, 3313 + "pass_rate": 100, 3314 3314 "results": [ 3315 3315 { 3316 3316 "input": "did:key:zDnaeTiq1PdzvZXUaMdezchcMJQpBdH2VN4pgrrEhMCCbmwSb", ··· 3328 3328 "total": 5, 3329 3329 "passed": 5, 3330 3330 "failed": 0, 3331 - "pass_rate": 100.0, 3331 + "pass_rate": 100, 3332 3332 "results": [ 3333 3333 { 3334 3334 "input": "did:key:zQ3shokFTS3brHcDQrn82RUDfCZESWL1ZdCEJwekUDPQiYBme", ··· 3375 3375 "total": 21, 3376 3376 "passed": 21, 3377 3377 "failed": 0, 3378 - "pass_rate": 100.0, 3378 + "pass_rate": 100, 3379 3379 "categories": [ 3380 3380 { 3381 3381 "name": "DAG-CBOR/CID", ··· 3384 3384 "total": 3, 3385 3385 "passed": 3, 3386 3386 "failed": 0, 3387 - "pass_rate": 100.0, 3387 + "pass_rate": 100, 3388 3388 "results": [ 3389 3389 { 3390 3390 "input": "fixture[0]", ··· 3416 3416 "total": 18, 3417 3417 "passed": 18, 3418 3418 "failed": 0, 3419 - "pass_rate": 100.0, 3419 + "pass_rate": 100, 3420 3420 "results": [ 3421 3421 { 3422 3422 "input": "bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdi", ··· 3554 3554 "total": 13, 3555 3555 "passed": 13, 3556 3556 "failed": 0, 3557 - "pass_rate": 100.0, 3557 + "pass_rate": 100, 3558 3558 "categories": [ 3559 3559 { 3560 3560 "name": "Key Heights", ··· 3563 3563 "total": 0, 3564 3564 "passed": 0, 3565 3565 "failed": 0, 3566 - "pass_rate": 0.0, 3566 + "pass_rate": 0, 3567 3567 "results": [] 3568 3568 }, 3569 3569 { ··· 3573 3573 "total": 13, 3574 3574 "passed": 13, 3575 3575 "failed": 0, 3576 - "pass_rate": 100.0, 3576 + "pass_rate": 100, 3577 3577 "results": [ 3578 3578 { 3579 3579 "input": "prefix[0]: , ",