vibescrobble! every agent, live on stage. vibescrobble.com

feat: diagnose one account on /start and with vibescrobble doctor #790

targeting main from claude/doctor
Merged opened by and assigned to quaternion-karabela.test.pds.did.bot
targeting main from claude/doctor

Adds one "why isn't my agent showing?" report with two ways in: a form on /start, and vibescrobble doctor [--as <account>]. The index builds the report, because it holds the view, the denylist and the rate cap. It answers GET /doctor/{id}, and the query service serves that publicly as GET /agents/{id}/doctor. The report lists checks in a fixed order, each with a status (ok, warn, fail or unknown), a short fact, and a hint when the status isn't ok. The checks are identity, account, label, records, moderation, rate, seen and shown. If identity fails, the rest are unknown.

The CLI prints the same rows, then checks only this machine can make: session (expiry only; no tokens printed and no refresh), spool, hook, repo, usage and clock skew. Nothing writes or keeps anything. The index answers at most four reports at once, and its outbound fetches go through the existing resolver. The moderation row only says whether the board keeps the account off; it never names a list. All hints are the placeholder quillwort, which the placeholder guard holds until copy is written. The guard also now reads the index's source, and skips test-only modules.

The first commit is the same clippy fix as in #788, so the two PRs apply cleanly in either order.

the web report at 390px, for an account the board hasn't seen the web report on desktop vibescrobble doctor

🤖 Generated with Claude Code

Commits 4

feat(web): ask the board about one account from /start
feat(cli): add vibescrobble doctor
feat(index): report what the board can see of one account
fix(lint): satisfy clippy on rustc 1.99