Decision (ADR) — where does the motir-marketing site (motir.co) run? 8.3.10 plans a NEW Vercel project while MOTIR-2396 is closing the account
Repo: motir-core (the ADR lands in docs/decisions/, beside application-hosting.md — one PR, docs-only, docs/* branch prefix). Type: decision — this card writes a record and changes no code, no workflow and no config.
Filed 2026-08-15 by MOTIR-2518's Vercel sweep. 8.3.10 (MOTIR-1455) is a live CONTRADICTION, not merely stale prose: it plans to create a new Vercel project for motir.co, while MOTIR-2396 (in_progress) is retiring the Vercel project and ending the billing relationship, and MOTIR-2508 waits behind it to delete vercel.json. Nobody can pick 8.3.10 up as written, and 8.3.6 + 8.3.7 are blocked behind it — the whole marketing chain is stalled on one unanswered question.
The question
Where does the motir-marketing site (motir.co) run? application-hosting.md decided where motir-core runs and deliberately said nothing about the marketing site, so this is a genuine gap rather than a clause to re-read.
Ground truth, read 2026-08-15
motir-marketingdoes not exist (gh repo view moooon-B-V/motir-marketing→ Could not resolve to a Repository).motir.coapex andwww.motir.coresolve to nothing (no A record).app.motir.co→66.241.124.71,motir-core.fly.dev— the app is on Fly.- So nothing is deployed anywhere yet, and no option is foreclosed by existing infrastructure.
The options, and what each costs
| Option | Cost | |
|---|---|---|
| A | Fly.io, a second app beside motir-core in org moooon | No new vendor, no new account, no new DPA row. Reuses the Dockerfile + output: 'standalone' path already in production. One bill, one deploy story, one set of secrets mechanics. Static-asset egress at $0.02/GB, the tradeoff application-hosting.md Q7 already accepted knowingly. |
| B | Cloudflare Pages / Netlify | A genuinely better static CDN and a free tier. But a THIRD vendor: a new account, a new billing relationship, and a new row on the subprocessor list — which MOTIR-1160 has just been corrected and which 8.5.1 Q8 now requires a per-vendor transfer basis for. |
| C | Keep the Vercel project alive for the marketing site only | Directly contradicts MOTIR-2396, which is in_progress. application-hosting.md §5 already rejected the isomorphic proposal for previews — "Keeps the account, the billing relationship, vercel.json, and two build paths that can disagree" — and every word of that applies here. |
| D | Serve motir.co from motir-core itself | Rejected by Story 8.3's own premise: "the public marketing site is no longer motir-core's app/page.tsx". It also re-couples marketing deploys to app deploys. |
The recommendation this card should argue from — and it is a recommendation, not a foregone conclusion
A (Fly). It adds no vendor, no billing relationship, no subprocessor row and no second build model, and it reuses a path that is already carrying production. It is also the only option that lets MOTIR-2396 finish without a carve-out. B is the defensible dissent — a marketing site is exactly the workload a static CDN is best at, and the cost is one vendor row, not an architecture. Weigh B honestly rather than dismissing it; do not weigh C.
⚠️ ORDERING — this is why the card is urgent. Option C is only available until MOTIR-2396 step 4 deletes the Vercel project, which is irreversible. If C is to be considered at all, this decision lands FIRST. A comment saying so is on MOTIR-2396; no blocked_by edge was wired, because serializing an in-flight retirement on a marketing question would be the wrong trade.
Acceptance criteria
motir-core/docs/decisions/marketing-site-hosting.mdexists in the house shape (Status → Context → Decision → Consequences), with a numbered-Q section and a per-Q rejected-alternatives table, perpublic-api-conventions.mdAmendments 9–11.- It answers, each as its own Q: where the site runs; who owns the
motir.coapex +wwwDNS records and what they point at; what CI deploys it (mirroring motir-core's lint + build gates, per 8.3.10); and whether the choice adds a subprocessor row — answered explicitly either way, since MOTIR-1160 is the consumer. - The rejected-alternatives table names all four options above, and quotes
application-hosting.md§5's rejection of the keep-Vercel-alive shape rather than re-deriving it. - The record names its consumers by key — MOTIR-1455 (provisioning), MOTIR-1152 (the build), MOTIR-1154 (the SEO root), MOTIR-1160 (the subprocessor list) — and says which of them the decision changes.
- ORDERING: the record states its relationship to MOTIR-2396 explicitly — that option C expires when that card's step 4 runs, and that the other three are unaffected by it.
- MOTIR-1455 is re-scoped to the decided host as a follow-up (it is
blocked_bythis card and its title still says "Vercel project"); that re-scope is part of closing this card, not a later sweep.
Context refs
docs/decisions/application-hosting.md— §5's rejected-alternatives table (the keep-the-account-alive argument, already made and already rejected for previews) and Q7 (static egress accepted at $0.02/GB).docs/decisions/production-service-stack.mdQ8 — the per-vendor transfer-basis obligation that makes "one more vendor" a real cost.- MOTIR-1455 (8.3.10, the contradicted card) · MOTIR-2396 (the retirement,
in_progress) · MOTIR-2508 (deletesvercel.json) · MOTIR-1160 (the subprocessor list). - MOTIR-2518 — the sweep that surfaced this.