atproto libraries implementation in ocaml
at main 8.4 kB view raw
1<!DOCTYPE html> 2<html lang="en"> 3<head> 4 <meta charset="UTF-8"> 5 <meta name="viewport" content="width=device-width, initial-scale=1.0"> 6 <title>AT Protocol Compliance Report</title> 7 <style> 8 :root { --green: #22c55e; --red: #ef4444; --yellow: #eab308; --gray: #6b7280; } 9 body { font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; 10 line-height: 1.6; max-width: 1200px; margin: 0 auto; padding: 2rem; background: #f9fafb; } 11 h1 { color: #111827; border-bottom: 2px solid #e5e7eb; padding-bottom: 0.5rem; } 12 h2 { color: #374151; margin-top: 2rem; } 13 .summary { background: white; border-radius: 8px; padding: 1.5rem; box-shadow: 0 1px 3px rgba(0,0,0,0.1); margin-bottom: 2rem; } 14 .summary-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 1rem; } 15 .stat { text-align: center; padding: 1rem; background: #f3f4f6; border-radius: 6px; } 16 .stat-value { font-size: 2rem; font-weight: bold; color: #111827; } 17 .stat-label { color: #6b7280; font-size: 0.875rem; } 18 .pass-rate { font-size: 3rem; font-weight: bold; } 19 .pass-rate.perfect { color: var(--green); } 20 .pass-rate.good { color: var(--yellow); } 21 .pass-rate.bad { color: var(--red); } 22 table { width: 100%; border-collapse: collapse; background: white; border-radius: 8px; overflow: hidden; box-shadow: 0 1px 3px rgba(0,0,0,0.1); margin: 1rem 0; } 23 th, td { padding: 0.75rem 1rem; text-align: left; border-bottom: 1px solid #e5e7eb; } 24 th { background: #f9fafb; font-weight: 600; color: #374151; } 25 tr:hover { background: #f9fafb; } 26 .status-pass { color: var(--green); } 27 .status-fail { color: var(--red); } 28 .badge { display: inline-block; padding: 0.25rem 0.75rem; border-radius: 9999px; font-size: 0.75rem; font-weight: 600; } 29 .badge-pass { background: #dcfce7; color: #166534; } 30 .badge-fail { background: #fee2e2; color: #991b1b; } 31 .fixture-file { font-family: monospace; font-size: 0.875rem; color: #6b7280; } 32 .suite { background: white; border-radius: 8px; padding: 1.5rem; box-shadow: 0 1px 3px rgba(0,0,0,0.1); margin-bottom: 1.5rem; } 33 .suite-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 1rem; } 34 .suite-title { margin: 0; color: #111827; } 35 .progress-bar { height: 8px; background: #e5e7eb; border-radius: 4px; overflow: hidden; } 36 .progress-fill { height: 100%; background: var(--green); transition: width 0.3s; } 37 .meta { color: #6b7280; font-size: 0.875rem; margin-top: 1rem; } 38 a { color: #2563eb; text-decoration: none; } 39 a:hover { text-decoration: underline; } 40 code { background: #f3f4f6; padding: 0.125rem 0.375rem; border-radius: 4px; font-size: 0.875rem; } 41 details { margin-top: 1rem; } 42 summary { cursor: pointer; color: #2563eb; font-weight: 500; } 43 .failed-tests { margin-top: 1rem; } 44 </style> 45</head> 46<body> 47 <h1>AT Protocol Compliance Report</h1> 48 <div class="summary"> 49 <div class="summary-grid"> 50 <div class="stat"><div class="pass-rate perfect">100%</div><div class="stat-label">Pass Rate</div></div> 51 <div class="stat"><div class="stat-value">494</div><div class="stat-label">Total Tests</div></div> 52 <div class="stat"><div class="stat-value status-pass">494</div><div class="stat-label">Passed</div></div> 53 <div class="stat"><div class="stat-value status-fail">0</div><div class="stat-label">Failed</div></div> 54 </div> 55 </div> 56 <div class="suite"> 57 <div class="suite-header"> 58 <h2 class="suite-title">Syntax Validation</h2> 59 <span class="badge badge-pass">448/448</span> 60 </div> 61 <p><a href="https://atproto.com/specs/lexicon#string-formats" target="_blank">📖 View Specification</a></p> 62 <div class="progress-bar"> 63 <div class="progress-fill" style="width: 100.0%"></div> 64 </div> 65 <table> 66 <thead><tr><th>Category</th><th>Fixture</th><th>Passed</th><th>Failed</th><th>Status</th></tr></thead> 67 <tbody> 68 <tr><td>Handle</td><td class="fixture-file">handle_syntax_valid.txt, handle_syntax_invalid.txt</td><td>119</td><td>0</td><td class="status-pass">✅ Pass</td></tr> 69 <tr><td>DID</td><td class="fixture-file">did_syntax_valid.txt, did_syntax_invalid.txt</td><td>42</td><td>0</td><td class="status-pass">✅ Pass</td></tr> 70 <tr><td>NSID</td><td class="fixture-file">nsid_syntax_valid.txt, nsid_syntax_invalid.txt</td><td>52</td><td>0</td><td class="status-pass">✅ Pass</td></tr> 71 <tr><td>TID</td><td class="fixture-file">tid_syntax_valid.txt, tid_syntax_invalid.txt</td><td>13</td><td>0</td><td class="status-pass">✅ Pass</td></tr> 72 <tr><td>Record Key</td><td class="fixture-file">recordkey_syntax_valid.txt, recordkey_syntax_invalid.txt</td><td>27</td><td>0</td><td class="status-pass">✅ Pass</td></tr> 73 <tr><td>AT-URI</td><td class="fixture-file">aturi_syntax_valid.txt, aturi_syntax_invalid.txt</td><td>95</td><td>0</td><td class="status-pass">✅ Pass</td></tr> 74 <tr><td>Datetime</td><td class="fixture-file">datetime_syntax_valid.txt, datetime_syntax_invalid.txt</td><td>79</td><td>0</td><td class="status-pass">✅ Pass</td></tr> 75 <tr><td>Language</td><td class="fixture-file">language_syntax_valid.txt, language_syntax_invalid.txt</td><td>21</td><td>0</td><td class="status-pass">✅ Pass</td></tr> 76 </tbody> 77 </table> 78 </div> 79 <div class="suite"> 80 <div class="suite-header"> 81 <h2 class="suite-title">Cryptography</h2> 82 <span class="badge badge-pass">12/12</span> 83 </div> 84 <p><a href="https://atproto.com/specs/cryptography" target="_blank">📖 View Specification</a></p> 85 <div class="progress-bar"> 86 <div class="progress-fill" style="width: 100.0%"></div> 87 </div> 88 <table> 89 <thead><tr><th>Category</th><th>Fixture</th><th>Passed</th><th>Failed</th><th>Status</th></tr></thead> 90 <tbody> 91 <tr><td>Signature Verification</td><td class="fixture-file">signature-fixtures.json</td><td>6</td><td>0</td><td class="status-pass">✅ Pass</td></tr> 92 <tr><td>P-256 did:key</td><td class="fixture-file">w3c_didkey_P256.json</td><td>1</td><td>0</td><td class="status-pass">✅ Pass</td></tr> 93 <tr><td>K-256 did:key</td><td class="fixture-file">w3c_didkey_K256.json</td><td>5</td><td>0</td><td class="status-pass">✅ Pass</td></tr> 94 </tbody> 95 </table> 96 </div> 97 <div class="suite"> 98 <div class="suite-header"> 99 <h2 class="suite-title">Data Model (IPLD)</h2> 100 <span class="badge badge-pass">21/21</span> 101 </div> 102 <p><a href="https://atproto.com/specs/data-model" target="_blank">📖 View Specification</a></p> 103 <div class="progress-bar"> 104 <div class="progress-fill" style="width: 100.0%"></div> 105 </div> 106 <table> 107 <thead><tr><th>Category</th><th>Fixture</th><th>Passed</th><th>Failed</th><th>Status</th></tr></thead> 108 <tbody> 109 <tr><td>DAG-CBOR/CID</td><td class="fixture-file">data-model-fixtures.json</td><td>3</td><td>0</td><td class="status-pass">✅ Pass</td></tr> 110 <tr><td>CID Syntax</td><td class="fixture-file">cid_syntax_valid.txt, cid_syntax_invalid.txt</td><td>18</td><td>0</td><td class="status-pass">✅ Pass</td></tr> 111 </tbody> 112 </table> 113 </div> 114 <div class="suite"> 115 <div class="suite-header"> 116 <h2 class="suite-title">Merkle Search Tree (MST)</h2> 117 <span class="badge badge-pass">13/13</span> 118 </div> 119 <p><a href="https://atproto.com/specs/repository#mst-structure" target="_blank">📖 View Specification</a></p> 120 <div class="progress-bar"> 121 <div class="progress-fill" style="width: 100.0%"></div> 122 </div> 123 <table> 124 <thead><tr><th>Category</th><th>Fixture</th><th>Passed</th><th>Failed</th><th>Status</th></tr></thead> 125 <tbody> 126 <tr><td>Key Heights</td><td class="fixture-file">key_heights.json</td><td>0</td><td>0</td><td class="status-pass">✅ Pass</td></tr> 127 <tr><td>Common Prefix</td><td class="fixture-file">common_prefix.json</td><td>13</td><td>0</td><td class="status-pass">✅ Pass</td></tr> 128 </tbody> 129 </table> 130 </div> 131 <div class="meta"> 132 <p>Generated: 2026-01-01T22:04:38Z</p> 133 <p>Repository: <a href="https://github.com/gdiazlo/atproto">https://github.com/gdiazlo/atproto</a></p> 134 <p>Test fixtures from <a href="https://github.com/bluesky-social/atproto-interop-tests">AT Protocol Interoperability Tests</a></p> 135 </div> 136</body> 137</html>