atproto git client

feat(status): add `status tangled`, the other half of doctor master

`doctor` asks whether you are set up and hands you a command for every bad row. This asks whether the services are up: no row is about you, none has a remedy, and the answer to a bad one is to wait. It is the question left over when `doctor` says everything is fine and the thing you were doing still fails — and the one `doctor` structurally cannot answer, every network row it has being scoped to the repo you are standing in. Four rows, each asked the question atgc's own use of that service depends on rather than a health endpoint invented for the purpose: the appview's site, Bobbin's search, `sh.tangled.knot.version`, the PDS's `_health`. Tangled's appview has `_health` in its source and the deployed build 404s it, so a uniform probe would have reported the same 404 for every service in every state. A silent host is an error and exits 6; a host that answered a refusal is a warning, because a service that refuses is running. The knot comes from the repo's own DID document rather than its `sh.tangled.repo` record, which is where `doctor` reads it: that record sits at an address only Bobbin can supply, so `doctor`'s route goes dark exactly when the index does, and an index outage is what somebody runs this to confirm. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>