spec: record path routing as future work — the /blog case forces it eventually
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
1 file changed,
+11
−0
docs/superpowers/specs/2026-08-02-custom-domains-design.md+11 −0
diff --git a/docs/superpowers/specs/2026-08-02-custom-domains-design.md b/docs/superpowers/specs/2026-08-02-custom-domains-design.md| index 5ee4cd22c..58c906a36 100644 |
| --- a/docs/superpowers/specs/2026-08-02-custom-domains-design.md |
| +++ b/docs/superpowers/specs/2026-08-02-custom-domains-design.md |
| @@ -143,3 +143,14 @@ Per app page, replacing the raw routes framing: |
| deliberately excluded here). |
| - **Multi-region DNS checks** (per-region edge IP sets once the mesh |
| ports land). |
| +- **Path routing** — one host fanning out to several upstreams by path |
| + prefix: `/blog` to a static site while the rest of the domain serves |
| + the dynamic app, or an app's satellites behind one origin (Woodstar's |
| + four services, see `2026-08-02-plan-woodstar-flagship.md` W0 — solved |
| + app-side for now with relay fan-out, deliberately: host-only routing |
| + keeps the route table a flat map with no longest-prefix ordering). |
| + When this lands it needs: a `path_prefix` column, deterministic |
| + longest-prefix matching, and an answer for which route owns ACME for |
| + the shared host. The `/blog` case is the one that will actually force |
| + it — a static class and an instance class sharing one hostname is |
| + something no app can solve for itself. |