atproto git client

fix(issue): require a body, which tangled.org does and the lexicon does not master

`sh.tangled.repo.issue` marks `body` optional; the appview does not honour that. Its `Issue.Validate` refuses `issue body is empty` and the ingester logs `failed to ingest record, dropping it without retry`, so a title-only issue is accepted by the PDS, federates, and never appears — the silent shape this module already guards a comment against, arrived at from the other direction. Pulls are exempt from the same check when the patch is a format-patch, which is why `pr create` needs no such rule. Refused before the write rather than warned about, because the record cannot be unpublished and nothing inside the process can observe that it went nowhere. The refusal names the appview's own error string, since that is the whole evidence for a rule `issue.json` contradicts. The two argument refusals beside it — `--body` with `--body-file`, an empty comment — take an exit status in the same hunks; the rest of the family's statuses are a commit of their own. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Change-Id: I2294de80612f742fbf8ce33ea47bbc668965addc


Author permadeath.com Co-author Claude Opus 5 (1M context) Committer Tangled Date Commit 516437e2 Parent 7a7adea7 Change ID I2294de8
+207 -20
7 changed files