Skip to content

feat(moshpit): batch-register the profullstack TLDs and expose alias controls - #76

Merged
ralyodio merged 1 commit into
masterfrom
feat/moshpit-names
Jul 31, 2026
Merged

feat(moshpit): batch-register the profullstack TLDs and expose alias controls#76
ralyodio merged 1 commit into
masterfrom
feat/moshpit-names

Conversation

@ralyodio

Copy link
Copy Markdown
Collaborator

Registers the requested namespace to anthony@profullstack.com, and gives operators a UI for the alias/exemption APIs that until now existed only as endpoints.

Only TLDs get registered — that's the whole model

registerTld is the only registration there is: "the operator of that TLD then owns everything under it" (PRD 0001). Claiming .yeah is what delivers fuck.yeah. There is no second-level row to write, and no moshpit_names table — I checked the schema.

So the 11 names in the request are 6 TLD claims:

TLD carries
.yeah fuck.yeah
.oranges chovy.oranges, california.oranges
.agent profullstack.agent
.profullstack — (reserved; see below)
.sploof original.sploof
.agentic — (registered so it can point at .agent)

The second-level names are kept in the script so the intent stays readable, and are asserted to parse under the TLD claimed for them — not claimed separately.

.profullstack is reserved, on purpose

It sits on RESERVED_TLDS under "ours: the network's own names are not for sale". That list exists to stop other people claiming it; assigning one of our own names to us is the single case it's meant to yield to — exactly what seed-moshpit-tld.ts already does for .moshpit. The script passes allowReserved for that one entry, and it stays unreachable from the public API.

Idempotent

An already-held TLD is left exactly as it is. A TLD held by a different owner is reported and skipped, never reassigned. --dry-run reads the live registry and writes nothing.

bun run scripts/seed-moshpit-names.ts --dry-run   # see what would happen
bun run scripts/seed-moshpit-names.ts             # do it

Needs TURSO_DATABASE_URL / TURSO_AUTH_TOKEN, which is why it ships as a script rather than being run from here — I have no production credentials, and registration through the API is session-cookie authenticated.

.agentic.agent

Applied through the existing setAlias, which already requires the same account to hold both ends — aliasing a name you don't own would let one claim absorb a dozen unregistered ones. Resolution carries the label across, so foo.agenticfoo.agent.

The operator UI was the real gap

PUT/DELETE /api/moshpit/tlds/:tld/alias and the exemption routes worked fine and had no interface anywheregrep -rln alias app --include=*.tsx returned nothing. That made "customizable by operators" true only for operators who write curl.

New Moshpit TLDs tab in /dashboard: lists what you hold, claims new endings, points one TLD at another, clears the redirect, and manages the names held back from it (exemptions), which is how you keep keep.agentic where it is while the rest of .agentic redirects.

Tests

tests/moshpit-seed-names.test.mjs pins the assumptions the batch rests on: every requested name is a legal TLD, each second-level name really falls under the TLD claimed for it, the alias pair are both present, and .profullstack is still reserved — if that assertion ever flips, the name became publicly claimable and allowReserved stopped protecting anything.

69 tests pass, clean tsc --noEmit.

Note

app.moshcode.sh/pit currently returns 404, while pit.moshcode.sh/dashboard returns 200. If those are meant to be the same surface, that redirect is missing — out of scope here, flagging it.

🤖 Generated with Claude Code

…controls

Registers the requested namespace to anthony@profullstack.com and gives
operators a UI for the alias/exemption APIs, which until now existed only
as endpoints.

Only TLDs are registered, because only TLDs exist: "the operator of that
TLD then owns everything under it". Claiming .yeah is what delivers
fuck.yeah — there is no second-level registration to perform. The
second-level names are recorded in the script so the intent stays
readable, and are asserted to parse under the TLD claimed for them rather
than being claimed themselves.

  .yeah         carries fuck.yeah
  .oranges      carries chovy.oranges, california.oranges
  .agent        carries profullstack.agent
  .profullstack (reserved — deliberate bypass, see below)
  .sploof       carries original.sploof
  .agentic      registered so it can point at .agent

.profullstack sits on RESERVED_TLDS under "ours: the network's own names
are not for sale". That list exists to stop *other people* claiming it,
and assigning one of our own names to us is the single case it is meant
to yield to, so the script passes allowReserved for that entry alone. It
stays unreachable from the public API.

The script is idempotent — an already-held TLD is left exactly as it is,
and a TLD held by a different owner is reported rather than touched, so a
re-run can never quietly reassign a name. --dry-run reads the live
registry and writes nothing.

.agentic -> .agent is applied via the existing setAlias, which already
requires the same account to hold both ends; aliasing a name you do not
own would otherwise let one claim absorb a dozen unregistered ones.

The operator-facing half was the actual gap: alias and exemption had
working PUT/DELETE routes and no interface, making them operator-only in
the sense of "operator who writes curl". A Moshpit TLDs tab now lists
what you hold, claims new endings, points one TLD at another, clears the
redirect, and manages the names held back from it.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@github-actions

Copy link
Copy Markdown

vu1nz Security Review

0 finding(s) in PR #?

No security issues found.

@ralyodio
ralyodio merged commit a5befbb into master Jul 31, 2026
2 checks passed
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