#!/usr/bin/env nu let did = "did:plc:dfl62fgb7wtjj3fcbb72naae" let pds_host = "https://zwsp.xyz" # wait for indexing print "waiting for services to stabilize..." sleep 5sec # add dids to tap let dids = ["did:plc:dfl62fgb7wtjj3fcbb72naae", "did:plc:dumbmutt4po52ept2tczimje"] try { let body = {dids: $dids} | to json http post --content-type application/json "http://127.0.0.1:2480/repos/add" $body } catch { print "tap add repos failed (maybe already running)" } sleep 5sec # 1. test app.bsky.actor.profile (single record) let collection = "app.bsky.actor.profile" print $"verifying ($collection) for ($did)..." let atur_url = $"http://127.0.0.1:7155/xrpc/systems.gaze.aturlist.listRecords?repo=($did)&collection=($collection)" print $"aturlist url: ($atur_url)" let atur_res = (http get $atur_url) let atur_uris = ($atur_res.aturis | sort) let pds_url = $"($pds_host)/xrpc/com.atproto.repo.listRecords?repo=($did)&collection=($collection)" print $"pds url: ($pds_url)" let pds_res = (http get $pds_url) let pds_uris = ($pds_res.records | each {|r| $r.uri } | sort) if ($atur_uris == $pds_uris) { print "success: profile matches." } else { print "failure: profile mismatch." print "aturlist: " $atur_uris print "pds: " $pds_uris exit 1 } # 2. test app.bsky.feed.like (multiple records) let collection = "app.bsky.feed.like" let limit = 20 # ascending check (oldest) print $"\nverifying ($collection) ascending \(oldest\)..." # aturlist: reverse=true -> ascending let atur_url_asc = $"http://127.0.0.1:7155/xrpc/systems.gaze.aturlist.listRecords?repo=($did)&collection=($collection)&reverse=true" print $"aturlist asc url: ($atur_url_asc)" let atur_res_asc = (http get $atur_url_asc) let atur_uris_asc = ($atur_res_asc.aturis | first $limit) # pds: reverse=true -> ascending let pds_url_asc = $"($pds_host)/xrpc/com.atproto.repo.listRecords?repo=($did)&collection=($collection)&limit=($limit)&reverse=true" print $"pds asc url: ($pds_url_asc)" let pds_res_asc = (http get $pds_url_asc) let pds_uris_asc = ($pds_res_asc.records | each {|r| $r.uri }) if ($atur_uris_asc == $pds_uris_asc) { print "success: ascending (oldest) matches." } else { print "failure: ascending mismatch." print "aturlist:" $atur_uris_asc print "pds:" $pds_uris_asc exit 1 } # descending check (newest) print $"\nverifying ($collection) descending \(newest\)..." # aturlist: reverse=false (default) -> descending let atur_url_desc = $"http://127.0.0.1:7155/xrpc/systems.gaze.aturlist.listRecords?repo=($did)&collection=($collection)&reverse=false" print $"aturlist desc url: ($atur_url_desc)" let atur_res_desc = (http get $atur_url_desc) let atur_uris_desc = ($atur_res_desc.aturis | first $limit) # pds: reverse=false (default) -> descending let pds_url_desc = $"($pds_host)/xrpc/com.atproto.repo.listRecords?repo=($did)&collection=($collection)&limit=($limit)&reverse=false" print $"pds desc url: ($pds_url_desc)" let pds_res_desc = (http get $pds_url_desc) let pds_uris_desc = ($pds_res_desc.records | each {|r| $r.uri }) if ($atur_uris_desc == $pds_uris_desc) { print "success: descending (newest) matches perfectly." } else { # check for lag consistency let head = ($atur_uris_desc | first) if ($head in $pds_uris_desc) { print "warning: lag detected, but consistent." } else { print "failure: descending mismatch (and head not found in pds top 20)." exit 1 } } # 3. test countrecords print $"\nverifying countrecords for ($collection)..." let atur_count_url = $"http://127.0.0.1:7155/xrpc/systems.gaze.aturlist.countRecords?repo=($did)&collection=($collection)" print $"aturlist count url: ($atur_count_url)" let atur_count_res = (http get $atur_count_url) print $"aturlist count: ($atur_count_res.count)" if ($atur_count_res.count > 0) { print "success: count is positive." } else { print "warning: count is 0 (expected if db was reused without migration/reindex)." } print "\nverification summary: success."