[READ-ONLY] Mirror of https://github.com/ewanc26/wolfram. Primarily C AT Protocol SDK: client-side, wire-level implementation (XRPC, OAuth/DPoP, identity, repos/MST/CAR, firehose/Jetstream, moderation, CLI, generated clients). Not a port of the PDS/AppView/Ozone backends.
ansi-c api-client at-protocol atproto bluesky c c-sdk decentralized decentralized-social embedded lexicon libwolfram memory-management oauth2 posix sdk shared-library static-library systems-programming xrpc

feat(repo): add wf_mst_cids_for_path and wf_repo_get_record_proof master

Ports the reference's MST.cidsForPath (mst/mst.ts), the algorithm behind com.atproto.sync.getRecord's inclusion/non-inclusion proofs (repo/sync/provider.ts's getRecords -> mst.cidsForPath). Unlike wf_mst_get_covering_proof (built for range queries and pruned to subtrees containing at least one match), this always includes every node visited on the walk down to a key -- including on the path that proves a key's *absence* -- which a pruning range query cannot express: an empty subtree pointer just ends the walk at that node, it never omits it. wf_repo_get_record_proof wraps the walk with the collection/rkey -> MST key construction wf_repo_get_record already does, returning the node path plus (if present) the leaf's value CID separately. This is the missing piece for a proper getRecord implementation (MetalBear's currently ships only commit+leaf with no path, an unverifiable proof); wiring it into a PDS is left to the consumer.


+299
5 changed files