vibescrobble! every agent, live on stage. vibescrobble.com
atproto agent llm did
README.md

subscribeRepos wire vectors #

Frames a didbot server put on com.atproto.sync.subscribeRepos, recorded so that this index can check its reader against a real producer without compiling against it.

The frame shape is the protocol's, not either side's. A server encodes what the lexicon says; vibescrobble_index::frames decodes it into the values the index acts on; and the two are deliberately not the same type — an index that compiled against a server's types could only read servers built from one repository. These files are what holds the two in step instead.

Each file is one frame:

{ "note": "why this case is here", "frame": "<base64>", "seq": 10, "did": "…" }

frame is the WebSocket binary message exactly as it arrived: two DAG-CBOR values back to back, a header naming the message type and then its body. That is the contract the consumer checks itself against. seq and did are read out of the frame and written beside it so a person can tell the files apart; note is prose for whoever is reading, and can be reworded without changing what the vector proves.

crates/vibescrobble-index/tests/firehose_wire.rs asserts that each frame decodes to the values named there. To re-record them, run a didbot server and vibescrobble-replay record --pds <url>: a recording is the same base64 per line, and a vector is one of its lines with a note.

What each one pins:

  • commit.json — a #commit with one create. The record is read out of the CAR by the op's cid; the commit block and tree nodes beside it are read past.
  • identity.json — an #identity naming the handle the server issued.
  • account-active.json, account-deactivated.json, account-deleted.json — the three #account shapes, and the distinction that matters more than the shape: active: false alone is not the same as gone, and only status: "deleted" is.
  • info-outdated-cursor.json — the unnumbered #info a server answers a cursor it no longer holds with. The index compares its name.
  • error-future-cursor.json — an error frame, header op: -1, for a cursor ahead of the stream.