Update README.md and docs #74

Closed
opened 2026-07-25 23:01:28 +00:00 by Grandiras · 2 comments
Owner
No description provided.
Collaborator

🤖 On it — follow along in the action run; the reply will link the full session transcript.

📜 Live transcript — updating every ~5 minutes while the task runs.

🤖 On it — follow along in [the action run](https://git.grandiras.net/Grandiras/claude-bot/actions/runs/93); the reply will link the full session transcript. 📜 [Live transcript](https://git.grandiras.net/Grandiras/claude-bot/src/branch/claude-logs/transcripts/Grandiras/ATProto.NET/issue-74/run-93.md) — updating every ~5 minutes while the task runs.
Collaborator

Pushed branch claude/issue-74.

What I did

The issue body was empty, so I treated "Update README.md and docs" as: audit the documentation against the code and fix what has drifted. I cross-checked every type, method, parameter, and constant named in README.md and docs/ against src/ and tools/. A lot had rotted — several pages documented APIs that never existed or that were renamed.

Rewritten (the code in them could not compile as written):

  • docs/crypto.md — documented AtProtoKey.Generate, AtProtoCrypto.EncodeMultikey/DecodeMultikey/GenerateDidKey/ParseDidKey/Base58Encode (none exist; the real API is AtProtoCrypto.GenerateP256Key, key.ToMultikey(), key.ToDidKey(), FromMultikey/FromDidKey), a static ServiceAuthGenerator.CreateToken (it is an instance method with different parameters), and an MST that stores string CIDs with a byte[] Serialize() (it stores binary CIDs and returns a root + block map). Also extended to cover CarWriter and covering proofs.
  • docs/standard-site.md — every StandardSiteClient call omitted the required repository argument, and the records used fields that aren't in the Lexicon models (PublicationRecord.Theme, SubscriptionRecord.Subject, BasicTheme.PrimaryColor; DocumentRecord.Site/PublishedAt were missing).
  • docs/ozone.md — moderation events were named ModerationEvent* instead of ModEvent*; several calls passed request objects to methods taking positional arguments.
  • docs/lexicon-codegen.md — the migrate/publish flags and migration file format didn't match the CLI, and the programmatic migration API had the wrong shape.

Targeted fixes: api-reference.md (a fabricated Bsky.Unspecced client, wrong Ozone/Site client types, AtProtoScopes.Full, ServiceProxy described as an instance type, RateLimitInfo nullability/Policy), did-resolution.md (ResolveAsyncResolveDidAsync, GetLatestOperationAsyncGetLastOperationAsync, HttpRequestExceptionPlcException, ServiceEndpoint.Endpoint), firehose.md (SetCursorAsyncStoreCursorAsync), identity-types.md (Handle.Segments, Tid.Timestamp, AtUri.Create), blob-upload.md (uploads return a BlobRef; downloads use Sync.GetBlobAsync), video.md (stream upload; JobState.Processing is really Encoding/Scanning), labeler.md (Views is List<JsonElement>; wrong namespace for StandardLabelValues), plus batch-operations.md, server.md, aspnet-core.md, aspire.md, managed-pds.md, oauth.md (the error-code table listed codes the SDK never throws), and getting-started.md.

Added: documentation for the 0.5.0 repository-authoring APIs that shipped with no prose at all — CarWriter, RepoCommit/SignedRepoCommit, PlcOperationBuilder, MerkleSearchTree.SerializeProof, Tid.FromInt64/ToInt64, CidComputation.TryDecodeCidString, DidDocument.Context, XrpcClient.SetAdminCredentials. architecture.md claimed five runtime packages (there are four) and that only the core project generates docs (all four do, with CS1591 as an error).

Verification

  • Built every corrected snippet: I assembled the edited code samples into scratch projects referencing ATProtoNet, ATProtoNet.Server, and the generator tool — all compile, 0 errors. That's how I caught three further bugs I'd have otherwise missed (TryDecodeCidString arity, ServiceEndpoint.Endpoint, a missing using for CommitEvent in firehose.md).
  • Ran the documented atproto-lexgen csharp, publish, and migrate invocations end to end against a sample Lexicon — all work as written.
  • dotnet build: succeeded, 0 warnings. dotnet test tests/ATProtoNet.Tests/: 1103 passed, 0 failed, 5 skipped (the usual environment-gated ones).

One source file changed: AtProtoClientBuilder's XML example used the same non-existent FileSessionStore the docs did. CHANGELOG.md updated under [Unreleased] → Fixed.


⏱ 24m 47s · 260 turns · tokens: 351.7k in / 111.6k out (+41542.9k cache-read)
📜 Full session transcript
→ Opened PR: #77

Pushed branch **`claude/issue-74`**. ## What I did The issue body was empty, so I treated "Update README.md and docs" as: audit the documentation against the code and fix what has drifted. I cross-checked every type, method, parameter, and constant named in `README.md` and `docs/` against `src/` and `tools/`. A lot had rotted — several pages documented APIs that never existed or that were renamed. **Rewritten (the code in them could not compile as written):** - **`docs/crypto.md`** — documented `AtProtoKey.Generate`, `AtProtoCrypto.EncodeMultikey`/`DecodeMultikey`/`GenerateDidKey`/`ParseDidKey`/`Base58Encode` (none exist; the real API is `AtProtoCrypto.GenerateP256Key`, `key.ToMultikey()`, `key.ToDidKey()`, `FromMultikey`/`FromDidKey`), a static `ServiceAuthGenerator.CreateToken` (it is an instance method with different parameters), and an MST that stores string CIDs with a `byte[] Serialize()` (it stores binary CIDs and returns a root + block map). Also extended to cover `CarWriter` and covering proofs. - **`docs/standard-site.md`** — every `StandardSiteClient` call omitted the required repository argument, and the records used fields that aren't in the Lexicon models (`PublicationRecord.Theme`, `SubscriptionRecord.Subject`, `BasicTheme.PrimaryColor`; `DocumentRecord.Site`/`PublishedAt` were missing). - **`docs/ozone.md`** — moderation events were named `ModerationEvent*` instead of `ModEvent*`; several calls passed request objects to methods taking positional arguments. - **`docs/lexicon-codegen.md`** — the `migrate`/`publish` flags and migration file format didn't match the CLI, and the programmatic migration API had the wrong shape. **Targeted fixes:** `api-reference.md` (a fabricated `Bsky.Unspecced` client, wrong Ozone/Site client types, `AtProtoScopes.Full`, `ServiceProxy` described as an instance type, `RateLimitInfo` nullability/`Policy`), `did-resolution.md` (`ResolveAsync`→`ResolveDidAsync`, `GetLatestOperationAsync`→`GetLastOperationAsync`, `HttpRequestException`→`PlcException`, `ServiceEndpoint.Endpoint`), `firehose.md` (`SetCursorAsync`→`StoreCursorAsync`), `identity-types.md` (`Handle.Segments`, `Tid.Timestamp`, `AtUri.Create`), `blob-upload.md` (uploads return a `BlobRef`; downloads use `Sync.GetBlobAsync`), `video.md` (stream upload; `JobState.Processing` is really `Encoding`/`Scanning`), `labeler.md` (`Views` is `List<JsonElement>`; wrong namespace for `StandardLabelValues`), plus `batch-operations.md`, `server.md`, `aspnet-core.md`, `aspire.md`, `managed-pds.md`, `oauth.md` (the error-code table listed codes the SDK never throws), and `getting-started.md`. **Added:** documentation for the 0.5.0 repository-authoring APIs that shipped with no prose at all — `CarWriter`, `RepoCommit`/`SignedRepoCommit`, `PlcOperationBuilder`, `MerkleSearchTree.SerializeProof`, `Tid.FromInt64`/`ToInt64`, `CidComputation.TryDecodeCidString`, `DidDocument.Context`, `XrpcClient.SetAdminCredentials`. `architecture.md` claimed five runtime packages (there are four) and that only the core project generates docs (all four do, with CS1591 as an error). ## Verification - Built every corrected snippet: I assembled the edited code samples into scratch projects referencing `ATProtoNet`, `ATProtoNet.Server`, and the generator tool — **all compile, 0 errors**. That's how I caught three further bugs I'd have otherwise missed (`TryDecodeCidString` arity, `ServiceEndpoint.Endpoint`, a missing `using` for `CommitEvent` in `firehose.md`). - Ran the documented `atproto-lexgen csharp`, `publish`, and `migrate` invocations end to end against a sample Lexicon — all work as written. - `dotnet build`: **succeeded, 0 warnings**. `dotnet test tests/ATProtoNet.Tests/`: **1103 passed, 0 failed, 5 skipped** (the usual environment-gated ones). One source file changed: `AtProtoClientBuilder`'s XML example used the same non-existent `FileSessionStore` the docs did. `CHANGELOG.md` updated under `[Unreleased] → Fixed`. --- ⏱ 24m 47s · 260 turns · tokens: 351.7k in / 111.6k out (+41542.9k cache-read) 📜 [Full session transcript](https://git.grandiras.net/Grandiras/claude-bot/src/branch/claude-logs/transcripts/Grandiras/ATProto.NET/issue-74/run-93.md) → Opened PR: https://git.grandiras.net/Grandiras/ATProto.NET/pulls/77
Sign in to join this conversation.
No milestone
No project
No assignees
2 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
Grandiras/ATProto.NET#74
No description provided.