ADR-0041 — Un programme qui paie, une page : /network/referral redirige vers /network/affiliate
L'ADR 0015 a aligne les deux pages qui paient sur un seul jeu de conditions : 30 % du net, 12 factures payees, 60 jours d'attribution, 30 jours de retention, tous lus dans src/config/affiliate.ts, un seul ledger…
Statut
Accepté · 2026-09-25
Remplace : ADR-0015
Piliers : growth-web, billing
Contexte
L'ADR 0015 a
aligne les deux pages qui paient sur un seul jeu de conditions : 30 %
du net, 12 factures payees, 60 jours d'attribution, 30 jours de retention,
tous lus dans src/config/affiliate.ts, un seul ledger
(AffiliateCommission). Cette partie de la decision tient et n'est pas
rouverte.
Elle gardait pourtant deux pages : /network/referral pour le client
qui presente un marchand, /network/affiliate pour le createur qui publie.
Sa seule raison ecrite : ce sont « deux funnels deja construits et
indexes », et une redirection « supprime un funnel d'acquisition indexe ».
Cette premisse ne tenait pas. L'audit de nettoyage avant indexation du
2026-09-25 (docs/audits/2026-09-25-nettoyage-avant-indexation.md,
decision D4, ligne 27 de l'audit d'architecture) part d'un site peu
indexe : il n'y avait pas de classement a proteger. Il y avait en
revanche un defaut que l'indexation allait aggraver : deux pages
indexables, meme ledger, memes termes, memes FAQ a une phrase pres, qui
se disputaient la meme requete (« programme d'affiliation Shopify »,
« parrainage BoostEcom »). Chacune renvoyait vers l'autre dans sa FAQ
(« Referral or affiliate: which one is mine? », « How is this different
from the referral programme? ») : la seule question que la separation
creait etait celle de savoir laquelle lire.
Et le cout d'une fusion croit avec le temps : une redirection aujourd'hui, six quand la langue entrera dans l'URL (ADR 0038).
Décision
Un programme qui paie, une page. /network/affiliate porte le
programme, avec deux sections d'audience sur les memes conditions : les
clients qui parrainent un marchand qu'ils connaissent, et les createurs ou
affilies qui publient pour une audience. /network/referral repond 308
vers /network/affiliate, dans next.config.mjs, et n'a plus de fichier
de route.
L'URL gardee est /network/affiliate parce qu'elle est deja le nom du
reste du systeme : /legal/affiliate, le ledger AffiliateCommission,
les constantes AFFILIATE_*, le tableau de bord d'affiliation.
Alternatives écartées
| Option | Pourquoi non |
|---|---|
| Garder les deux pages (l'ADR 0015) | Deux URL indexables pour une seule offre, un seul ledger et une seule requete : elles se cannibalisent, et chacune doit expliquer au lecteur qu'il est peut-etre sur la mauvaise. La raison de les garder (« deja indexees ») etait fausse, et le devient un peu plus a chaque jour d'indexation |
Garder /network/referral et rediriger l'autre | C'est la sortie 1 de l'ADR 0015, dans l'autre sens. referral ne nomme ni la page legale, ni le ledger, ni les constantes, ni le tableau de bord, et c'est le createur, pas le client, qui cherche un « affiliate program » |
Une canonique de /network/referral vers /network/affiliate, les deux pages restant en ligne | Une canonique est une suggestion, pas une consolidation : deux pages a maintenir, deux copies qui derivent, pour un seul contenu. Le billing/0369 a montre ce que deux copies d'un meme programme deviennent |
| Deux programmes, deux ledgers | Deja ecartee par l'ADR 0015, pour les memes raisons (table de clics, attribution par asset, liability a vie). Rien n'a change |
Conséquences
Ce que ca coute. Une redirection permanente a garder pour toujours :
l'URL a circule dans le prompt noyau d'@Atlas, llms.txt, le sitemap, la
FAQ de la home et le menu. Et une page plus longue : deux publics lisent
la meme, chacun passe la section de l'autre.
Ce qu'on accepte sciemment. Le formulaire de mise en relation
(NetworkApplyForm, program="referral") reste le seul formulaire de la
page, dans la section clients. Le composant pose des id fixes, donc deux
formulaires sur une page seraient deux fois les memes id : le createur
qui veut parler a une personne passe par /contact?topic=network. Le
formulaire « Tell us about your audience » de l'ancienne page affiliation
disparait avec elle.
Le signal qui indiquerait de revisiter. Deux publics qui demandent des conditions differentes, ce qui serait alors un second programme, donc un second ledger (la sortie deja chiffree et ecartee). Tant que l'argent est le meme, la page est la meme.
Comment c'est appliqué
next.config.mjs, blocwave2:D:/network/referral→/network/affiliate,permanent: true.src/test/network-pages-render-one-set-of-terms.test.tsrefuse qu'un fichier de route revienne sous(marketing)/network/referral(il repondrait 200 avant que la redirection ne soit lue) et que la redirection disparaisse ou change de cible. Il continue de refuser tout chiffre ecrit a la main dans la page.src/test/affiliate-copy.test.tslit les termes du programme sur les cles de la page unique (marketingPages.network.affiliate.*,…programs.affiliate.*), dans les six locales.src/test/llms-txt-targets.test.tsrefuse deja qu'une surfacellms.*pointe une URL qui redirige : l'entree « Referral program » a disparu dellms.txt,llms.jsonetllms-full.txt, fusionnee dans « Affiliate program ».