Repository navigation
Document preview hosts and custom domain name rules on Fabric - #718
dawsontoth wants to merge 12 commits into
Conversation
A Fabric custom domain can be a wildcard such as *.preview.example.com, covering one label below its base, so per-PR preview hosts need one registration instead of one each. The page now covers where its TXT record goes (_fabric.<base>), its CNAME, that a more specific domain wins, and that its certificate is the customer's: Fabric's automatic certificates use Let's Encrypt's HTTP-01 challenge, and Let's Encrypt issues wildcards only through DNS-01. The certificate is added with add_certificate against the cluster's Operations API. Also notes that domain names are case-insensitive and claimable by one organization once verified. Companion to HarperFast/central-manager#917 and HarperFast/host-manager#244; merge after both ship. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…s API URL, replication Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
🚀 Preview DeploymentYour preview deployment is ready! 🔗 Preview URL: https://preview.harper-documentation.harperfabric.com/pr-718 This preview will update automatically when you push new commits. |
Customer wildcard custom domains were dropped from HarperFast/central-manager#917. The page keeps the rules that still hold: names are case-insensitive and stored lowercase, must be valid hostnames, and belong to one organization once verified. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
🚀 Preview DeploymentYour preview deployment is ready! 🔗 Preview URL: https://preview.harper-documentation.harperfabric.com/pr-718 This preview will update automatically when you push new commits. |
A cluster can now serve isolated applications under *.preview.<cluster hostname> (HarperFast/central-manager#917, HarperFast/host-manager#244): Fabric creates the DNS record and orders the wildcard on each instance's certificate, so a preview needs only a deploy. Documents what reaches a preview host, the one-label rule, which clusters qualify, and the API request that turns it on until Studio has a setting. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…osts on Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
HarperFast/central-manager#917 now keys each cluster's preview namespace on its ID, *.<cluster id>.preview.<organization subdomain>.harperfabric.com, instead of the cluster's hostname, so the page shows that shape, drops the default-hostname requirement, and says where the ID is before the URL needs it. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
🚀 Preview DeploymentYour preview deployment is ready! 🔗 Preview URL: https://preview.harper-documentation.harperfabric.com/pr-718 This preview will update automatically when you push new commits. |
Preview hosts move from a per-cluster namespace turned on through the Fabric API to the wildcard of the cluster's own host name, which every cluster gets: pr-42.<cluster name>.<org>.harperfabric.com. Documents when existing clusters start serving them, and the cookie boundary between a cluster and its previews, recommending __Host- cookie names. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A preview runs under the cluster's own host name: recommend previewing only code trusted in production, give the attributes a __Host- cookie needs, note that Harper's own session cookie cannot take the prefix and that SameSite does not separate the two, and say that previews on an older multi-instance cluster are intermittent until every instance's certificate renews. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
🚀 Preview DeploymentYour preview deployment is ready! 🔗 Preview URL: https://preview.harper-documentation.harperfabric.com/pr-718 This preview will update automatically when you push new commits. |
Fabric now serves previews at pr-42.app.<cluster>.<org>.harperfabric.com: Let's Encrypt will not issue *.<cluster host name> beside the cluster's instance names, which sit one label under it. A host directly under the cluster's host name no longer reaches a preview, and the instance names no longer overlap preview names. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
🚀 Preview DeploymentYour preview deployment is ready! 🔗 Preview URL: https://preview.harper-documentation.harperfabric.com/pr-718 This preview will update automatically when you push new commits. |
…site caution to the cluster host name Self-hosted clusters get no preview hosts, so the section no longer opens with "every cluster". The same-site caution covers what production serves from the cluster's host name: what it serves only from a custom domain is a different site from the previews. A preview reaching an instance that has not renewed now gets no response, as host-manager#244 routes a preview host only once the instance's certificate carries the wildcard. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
🚀 Preview DeploymentYour preview deployment is ready! 🔗 Preview URL: https://preview.harper-documentation.harperfabric.com/pr-718 This preview will update automatically when you push new commits. |
|
i'm marking this as draft until we get the depends-on merged |
⊙ Problem
Fabric is adding preview hosts: Colocated and Dedicated clusters will serve isolated applications under
app.and their own host name, with no setting. The docs describe neither those hosts nor the custom domain name rules that HarperFast/central-manager#917 adds.🤔 Should the page describe preview hosts before they deploy?
Chosen: no. This PR merges only once HarperFast/central-manager#917 and HarperFast/host-manager#244 are live, so the page never describes hosts that do not work yet. The alternative is merging now with a note that previews are coming.
💡 Solution
pr-42.app.<cluster name>.<organization subdomain>.harperfabric.comreaches the isolated application that lists it, and any other host gets no response.SameSite.Depends-on: #715
Merge order
🤔 Should the page admit that previews are intermittent on existing clusters?
Chosen: yes. Until every instance has renewed, a request that reaches an instance without the new certificate gets no response, and the page says so. The alternative is waiting for the fleet to renew, about seven weeks after deploy, and merging then.
🤔 Is documenting the same-site boundary enough?
Chosen: yes. The page tells customers to preview only code they would trust in production, to use
__Host-cookies and CSRF orOriginchecks, and that Harper's own session cookie cannot take that prefix. Separating them would mean serving previews from another domain.🔧 Changes
fabric/cluster-creation-management.mdadds the Preview Hosts section:app.and the cluster's host name;__Host-names, Harper's session cookie,SameSite, and that what production serves only from a custom domain is a different site.fabric/custom-domains.mdadds the name rules under Adding a Custom Domain, linking to preview hosts.✅ Verification
npx prettier --checkis clean on both files.Statements checked
*.app.<cluster>record and host-manager's wildcard application routing, which covers one label.<location>-<n>.<cluster host name>, sit outsideapp., so no preview host can be one.security/auth.tsbuilds it as[origin-]hdb-session.customDomains.jsandclusterHostNames.🤖 Generated with Claude Code
Related PRs: none found
Complexity: easy
Review-Coverage: authored=claude; ran=gemini,cursor-composer,codex; adjudicated=domain; declined=cursor-grok,cursor-kimi,cursor-muse; rounds=5; full=1 @ 2af7c0f
Review-Attention: skim ~2m (decisions: previews-same-site-as-production, always-on-previews, renewal-driven-rollout, fabric-owned-preview-hosts) @ 2af7c0f