Claude: changes for issue #94 #95

Merged
Grandiras merged 1 commit from claude/issue-94 into main 2026-08-20 21:20:36 +00:00
Collaborator

Closes #94.

Closes #94.
fix: reject RepoAction.None instead of widening it to a full write grant
All checks were successful
CI / pds-integration (pull_request) Successful in 26s
CI / build-and-test (pull_request) Successful in 58s
Sync Closures to GitHub / sync-closure (pull_request) Successful in 6s
ffaf14d5a6
An omitted `action=` list means the full default set in the scope grammar,
so `AtProtoScopes.Repo("app.bsky.feed.post", RepoAction.None)` emitted
`repo:app.bsky.feed.post` — a create + update + delete grant, the exact
opposite of the zero-write one the caller asked for. The grammar has no
marker for an empty action list, so the request is inexpressible rather
than narrow: both `Repo` overloads now throw `ArgumentException`, matching
what `AtProtoScopes.Space(...)` does for `SpaceAction.None`.

The guard sits in the shared `AppendRepoActions` helper, so it covers the
single-collection overload, the multi-collection one, and the one-element
list that delegates between them.

Also documents `SpaceAction.None` as rejected — `Space(...)` has thrown for
it since #90, but the enum member still read "No specific action".

closes #94
Author
Collaborator

🤖 Reviewing this PR — follow along in the action run; the reply will link the full session transcript.

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

🤖 Reviewing this PR — follow along in [the action run](https://git.grandiras.net/Grandiras/claude-bot/actions/runs/322); the reply will link the full session transcript. <!-- claude-run:pr_review --> 📜 [Live transcript](https://git.grandiras.net/Grandiras/claude-bot/src/branch/claude-logs/transcripts/Grandiras/ATProto.NET/pr-95/run-322.md) — updating every ~5 minutes while the task runs.
claude-reviewer left a comment

Verdict: approve — no blocking issues found.

Clean, well-scoped fix. RepoAction.None now throws ArgumentException from AppendRepoActions, matching the existing SpaceAction.None guard exactly (same exception, same nameof(actions) parameter name, same rationale in the doc comments). Verified against the current source that the Space method already has this identical pattern, so the change brings Repo into consistency rather than inventing a new convention.

The list overload's count-1 path delegates to the single-collection overload, so it inherits the guard automatically — the PR adds an explicit test for that delegation path, which is a good catch since it's easy to assume coverage there without verifying it.

CHANGELOG entry is correctly filed under Breaking changes with a clear migration note. No other callers in the codebase pass RepoAction.None, so there's no fallout elsewhere. Tests cover all three call paths (single collection, multi-collection, and the one-element list delegating to single). No issues found.


⏱ 0m 30s · 8 turns · tokens: 20.9k in / 2.0k out (+329.8k cache-read)
📜 Full session transcript

✅ **Verdict: approve** — no blocking issues found. Clean, well-scoped fix. `RepoAction.None` now throws `ArgumentException` from `AppendRepoActions`, matching the existing `SpaceAction.None` guard exactly (same exception, same `nameof(actions)` parameter name, same rationale in the doc comments). Verified against the current source that the `Space` method already has this identical pattern, so the change brings `Repo` into consistency rather than inventing a new convention. The list overload's count-1 path delegates to the single-collection overload, so it inherits the guard automatically — the PR adds an explicit test for that delegation path, which is a good catch since it's easy to assume coverage there without verifying it. CHANGELOG entry is correctly filed under Breaking changes with a clear migration note. No other callers in the codebase pass `RepoAction.None`, so there's no fallout elsewhere. Tests cover all three call paths (single collection, multi-collection, and the one-element list delegating to single). No issues found. --- ⏱ 0m 30s · 8 turns · tokens: 20.9k in / 2.0k out (+329.8k cache-read) 📜 [Full session transcript](https://git.grandiras.net/Grandiras/claude-bot/src/branch/claude-logs/transcripts/Grandiras/ATProto.NET/pr-95/run-322.md) <!-- claude-verdict:approve --> <!-- claude-reviewed-head:ffaf14d5a654620c8a3f571d0ba032e64f53ac73 -->
Grandiras deleted branch claude/issue-94 2026-08-20 21:20:37 +00:00
Grandiras referenced this pull request from a commit 2026-08-20 21:20:37 +00:00
Sign in to join this conversation.
No description provided.