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