Repository navigation
Offers on unclaimed names + the registered state: rgstr offer/offers, whois/search/check, rgstr_offer_plan/apply, SKILL.md flow 4 - #33
Open
HeyGarrison wants to merge 5 commits into
Open
HeyGarrison wants to merge 5 commits into
HeyGarrison wants to merge 5 commits into
Conversation
… whois/search/check print registered, MCP rgstr_offer_plan/apply + rgstr_offers, SKILL.md flow 4
Contributor
|
I'll fix CI failures and address comments from users with write access. I'll skip comments containing "(aside)".
|
Contributor
There was a problem hiding this comment.
✅ Devin resolved all 3 findings on a1c416a
Fixed by Devin (3)
- Verified offers falsely request identity verification
- Offer plan skips required card setup
- Raised offer floor bypasses stale-plan error
…nged since the plan answers plan_stale
…ot invalid_argument
…s and charged only if the offer wins; search carries registered: true; --amount is whole dollars; acknowledged: true on POST
…nverified offer whose identity is verified reads 'waiting for the card'
HeyGarrison
marked this pull request as ready for review
October 21, 2026 18:57
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
Client side of the offers spec (
computesdk/benchmarks-platformdocs/2026-10-21-rgstr-offers.md, PR #812; platform built in #820 — shapes below match it and are mocked in tests).rgstr offer <name> [--amount <usd>] [--why <text>] [-y](packages/cli/src/offer-flow.ts) — plan → confirm → file, exactly likeclaim:GET /api/v1/registry/offers/floor/<name>→{ floorUsd, weeklyDownloads, openOffer, windowClosesAt }; prints floor, amount (whole dollars, default = the floor), why, any open offer, what filing does (returns a checkout link where you save the card — charged only if the offer wins — and the window opens once card + identity are in), and the rule verbatim: The maintainer can claim this name for free at any time during the 30-day window, and that beats your offer; your card is charged only if your offer wins, so their claim costs you nothing — there is nothing to refund.invalid_argument, hintRe-run with --amount <floor> or more) — no request is made to find out; a claimed name surfaces the API'sname_claimedhint from the floor read.POST /api/v1/registry/offers { name, amountUsd, why, acknowledged: true }only aftery/--yes;--jsonand non-TTY print the plan andRe-run with --yes …. No card hold: the 201 returnscheckoutUrl(Stripe Checkout, setup mode — the card is saved and charged off-session only if the offer wins) andidentity({verified}or{verified: false, url, hint}); the CLI prints both as the next steps and says the window opens once the card is saved and the identity is verified (an offer still waiting after 7 days lapses). Every API error (offer_identity_requiredincluded) lands infail(): the hint is the last line.rgstr offers→GET /api/v1/registry/offers(name, amount, state, window closes; an unverified offer readswaiting for the cardwhen the identity is already verified).rgstr offer --withdraw <name>finds the organization's open offer andPOST …/offers/<id>/withdraw, behind the same--yesgate.registeredeverywhere a state prints.WhoisResponsegainsstate: 'registered',registrant,routesTo,openOffer;SearchObject.rgstr.registered: boolean.whois:trust registered by Acme Labs · identity verified · routes to @acme/fastcache · no maintainer has claimed this name;claimed by nobody — maintain this package? \rgstr claim `, free; a claim beats the registration; anoffer` row while a window is open.search:registered (Acme Labs).check(check.ts): a registered row isregistered (Acme Labs → @acme/fastcache), served from the registrant's route, not counted asheld;CheckRowgainsregistered/registrant/routesTo,CheckResult.registered; the summary staysN of M names are claimed on rgstrand addsand K registeredwhen K > 0.MCP (
packages/mcp/src/server.ts):rgstr_offer_plan(name, amount?, why?)→plan_id;rgstr_offer_apply(plan_id)re-reads the floor and comparesfingerprint = [name, amountUsd, why, org, baseUrl, floorUsd, windowClosesAt, openOffer]→plan_staleon any change (a floor that rose past the amount included); returnscheckoutUrl+identityfor the agent to hand over;rgstr_offers(read, login). Instructions: an offer is a side effect — show the plan and confirm first; never for a name the user maintains.Docs:
skills/rgstr/SKILL.mdflow 4 "Offer for a name you cannot claim" (when, the rule, the checkout + identity URLs are the user's, commands, MCP tools, error codes),registeredin the state vocabulary; root/CLI/MCP READMEs and--helpmatch. Changesets: patch for@rgstr/cliand@rgstr/mcp.Contract with #820 (checked against its
offerJson, floor, whois and search routes): floor{ name, floorUsd, weeklyDownloads, openOffer, windowClosesAt, url }; offer record{ id, name, amountUsd, why, status ∈ unverified|open|won|refunded|lapsed|withdrawn, windowClosesAt, createdAt, url, organization { identityVerified }, … }; whoisregistrant { name, slug, url, identityVerified, … },routesTo,openOffer { amountUsd, by, windowClosesAt, … }; withdrawPOST …/offers/<id>/withdraw. No MCP withdraw tool (CLI only).Terminal (against a local mock of the shapes above)
rgstr offer— plan,y, filed with the checkout and identity URLs; and with--yes:rgstr whois— a registered name, an unclaimed name with an open offer, a claimed name:rgstr checkandrgstr searchwith a registered name:rgstr offers,offer --withdraw(n, then--yes),offer_identity_requiredwith the identity URL last, below the floor:@rgstr/mcp:rgstr_offer_plan→rgstr_offer_apply→rgstr_offersover stdio:Link to Devin session: https://app.devin.ai/sessions/024f4ae263d4498b881d32f50a3ab1fa
Open in Devin Desktop: https://app.devin.ai/desktop/session/024f4ae263d4498b881d32f50a3ab1fa?variant=devin
Requested by: @HeyGarrison