Skip to content

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
mainfrom
devin/1792598974-offers
Open

HeyGarrison wants to merge 5 commits into
mainfrom
devin/1792598974-offers

Conversation

@HeyGarrison

@HeyGarrison HeyGarrison commented Oct 21, 2026 •

Copy link
Copy Markdown
Contributor

Summary

Client side of the offers spec (computesdk/benchmarks-platform docs/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 like claim:

  • plan is one read, 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.
  • below the floor is refused in the plan (invalid_argument, hint Re-run with --amount <floor> or more) — no request is made to find out; a claimed name surfaces the API's name_claimed hint from the floor read.
  • apply is POST /api/v1/registry/offers { name, amountUsd, why, acknowledged: true } only after y / --yes; --json and non-TTY print the plan and Re-run with --yes …. No card hold: the 201 returns checkoutUrl (Stripe Checkout, setup mode — the card is saved and charged off-session only if the offer wins) and identity ({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_required included) lands in fail(): the hint is the last line.
  • rgstr offers → GET /api/v1/registry/offers (name, amount, state, window closes; an unverified offer reads waiting for the card when the identity is already verified). rgstr offer --withdraw <name> finds the organization's open offer and POST …/offers/<id>/withdraw, behind the same --yes gate.

registered everywhere a state prints. WhoisResponse gains state: '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; an offer` row while a window is open.
  • search: registered (Acme Labs).
  • check (check.ts): a registered row is registered (Acme Labs → @acme/fastcache), served from the registrant's route, not counted as held; CheckRow gains registered/registrant/routesTo, CheckResult.registered; the summary stays N of M names are claimed on rgstr and adds and K registered when 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 compares fingerprint = [name, amountUsd, why, org, baseUrl, floorUsd, windowClosesAt, openOffer] → plan_stale on any change (a floor that rose past the amount included); returns checkoutUrl + identity for 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.md flow 4 "Offer for a name you cannot claim" (when, the rule, the checkout + identity URLs are the user's, commands, MCP tools, error codes), registered in the state vocabulary; root/CLI/MCP READMEs and --help match. Changesets: patch for @rgstr/cli and @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 }, … }; whois registrant { name, slug, url, identityVerified, … }, routesTo, openOffer { amountUsd, by, windowClosesAt, … }; withdraw POST …/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 offer

rgstr whois — a registered name, an unclaimed name with an open offer, a claimed name:

rgstr whois

rgstr check and rgstr search with a registered name:

rgstr check / search

rgstr offers, offer --withdraw (n, then --yes), offer_identity_required with the identity URL last, below the floor:

rgstr offers / withdraw / errors

@rgstr/mcp: rgstr_offer_plan → rgstr_offer_apply → rgstr_offers over stdio:

MCP offer tools

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


Devin Review

… whois/search/check print registered, MCP rgstr_offer_plan/apply + rgstr_offers, SKILL.md flow 4
@devin-ai-integration

Copy link
Copy Markdown
Contributor

I'll fix CI failures and address comments from users with write access. I'll skip comments containing "(aside)".

  • Disable automatic comment, CI, and merge conflict monitoring

@devin-ai-integration devin-ai-integration Bot left a comment •

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

✅ 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

View all findings in Devin Review

Devin Review

…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
HeyGarrison marked this pull request as ready for review October 21, 2026 18:57
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant