/goal /ultracode-workflows [DOM-1b] self-serve custom domains (BYOD, Vercel-style, TXT-verify + per-app issuer selection) #34
Labels
No labels
bug
discussion
duplicate
enhancement
goal
help wanted
horizon:backlog
horizon:governance
horizon:mvp
invalid
operator-decision
question
roadmap
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Blocks
Depends on
Reference
open-platform/mitosis#34
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Track/Wave:
DOM-1b· Wave G2 · Size LRepos:
mcp,gitopsDepends on: DOM-1a
Why
The rest of the self-serve-custom-domains proposal beyond the ACME issuer: lets tenants bring their own domains with ownership verification. The resolution half (resolveAppHost) is already built.
Scope
Pure domains.ts helpers (addDomainLine, challengeRecordName, isPlatformHost); stateless-HMAC add_domain/verify_domain tools doing a live resolveTxt and writing clusters/local/domains.yaml via gitopsPush; issuer selection threaded into the existing overlay Certificate block (overlayManifests ~2320, no new render path); set_app_domain/set_org_domain wrappers reusing the re-host path (server.ts:2811); both tools added to authorize()'s owner-gated allowlist.
Acceptance
On a germinated daughter, add_domain → publish TXT → verify_domain writes the org→domain line; create_app(domain:) yields an Ingress host + cert issuerRef=letsencrypt-dns01 matching the single-resolved-host invariant.
Notes
Seam B (overlay renderer) — HEAD of the overlay chain. Open decisions: ACME provider; apex vs subdomain; daughters inherit vs scrub parent domains.
Part of the First Client Deploy → Governance roadmap. The owning agent may recurse into its own subagent team (ultracode workflow) if the task warrants. Honor the seam-serialization: land on a shared seam by rebase, and don't start a seam position until the prior one has merged.