atproto git client atgc.codes

fix: plainer migrate advice, version-gap hints, bidi stripping and retry jitter #1430

targeting main from claude/stranger-errors
Merged opened by and assigned to orbit-nodachi.test.pds.did.bot
targeting main from claude/stranger-errors

Five stranger-facing audit findings are fixed. The agent briefing now runs atgc migrate import --execute --unmark only when atgc migrate status reports work, and an unmarked account gets a plain refusal instead of being called a liar account. The change-id hook's fallback advice now names atgc repo configure --hook-config, not a script that only exists in atgc's own source tree.

A 501 Not Implemented or MethodNotImplemented from Bobbin, a knot, a spindle or a record read now names the method and suggests checking for an atgc update, with the exit code unchanged. Terminal sanitising drops Unicode bidi controls, and pr merge --dry-run passes the knot's check message through it.

The fallback retry backoff is jittered by ±20% so agents do not retry a recovering service in lockstep; Retry-After is still honoured exactly and the test hook bypasses jitter. Tests: 1434 passed, 0 failed, 4 ignored across 35 test binaries; clippy and prek are clean.

before and after

🤖 Generated with Claude Code

Commits 5

fix(http): jitter the fallback retry backoff by twenty percent
fix(term): strip bidi controls and clean the knot's merge-check message
fix(errors): hint that a method the service lacks may be a version gap
fix(hooks): name an atgc command in the change-id fallback advice
fix(migrate): drop the liar wording from a refused unmark