feat: registry stats, bulk verdict refresh, live agent count#163
Merged
Conversation
…badge - GET /api/admin/registry/stats — live counts from Supabase: total, by ecosystem, by verification status, by outreach, profile coverage (wallets/X/website/ticker/verdict) - POST /api/admin/registry/refresh-all-verdicts — bulk verdict refresh for all agents with declared wallets; called by Luca on Hermes daily; supports dry_run - Registry Stats card in /luca-admin: live numbers, profile coverage %, manual "Refresh All Verdicts" trigger with result summary - Public registry filter bar: green live dot + "N agents indexed" label Co-Authored-By: Claude <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01RjpGP3kYKnQuQAUoK6RZky
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
Blocker 1 — analyze/revenue-audit truth mismatch:
- analyze now uses isBooksEligibleWallet (same gate as agent-books/revenue-audit)
to determine wallets_verified and books_eligible_wallets count
- Previously: analyze used wallets.length > 0 + verificationStatus → could claim
manifest-backed when evidenceSource or address_type was missing
- Now both endpoints agree: a wallet only counts if evidenceSource=manifest AND
address_type in [eoa, treasury_contract]
- Wallet list in analyze response now includes books_eligible and ineligible_reason
per wallet — transparent about why a wallet doesn't produce books
Blocker 2 — generate_report --force returns 500 on duplicate slug:
- saveReport now accepts { upsert: true } option
- force=true path uses upsert (onConflict: slug) instead of insert
- Non-force path unchanged — still returns existing=true without overwriting
- No more 500 on valid same-day rerun with force flag
Co-Authored-By: Claude <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RjpGP3kYKnQuQAUoK6RZky
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
/luca-admin— live counts from Supabase on demand: total agents, breakdown by ecosystem and verification status, profile coverage % (X handle / website / ticker / verdict), agents refreshed this monthPOST /api/admin/registry/refresh-all-verdicts— bulk verdict refresh endpoint; loops all agents with declared wallets, recomputes books + verdict from live data, writes back to Supabase. Supportsdry_run: true. This is the endpoint Luca calls daily from Hermes.GET /api/admin/registry/stats— raw stats endpoint backing the admin cardLuca integration
Luca (on Hermes) should call
POST /api/admin/registry/refresh-all-verdictsdaily with the admin Bearer token. Returns{ succeeded, failed, total_eligible, results[] }so Luca can log or alert on failures.Generated by Claude Code