Actions accomplies: 1. Seeds tagging: UPDATE admin.brain_seeds SET provider = CASE isp... 51450 rows tagged Distribution: microsoft 35661 other 15199 gmail 306 gmx 103 yahoo 66 2. open.php tracking fix: Bug: template uses id= but open.php only reads t=c= Fix V155: accept id= + backward compat t=c= GOLD open.php.GOLD-V155-20260422-024245 Test live HTTP 200 + log confirmed 3. Template analysis: Responsive HTML 600px Branding Ethica gradient CTA consent.wevup.app/?token= Tracking pixel now functional ISSUE consent.wevup.app/unsubscribe 404 RGPD critical action Yacine 4. Warmup protocol doc: vault/ethica/warmup-protocol.md (1552 bytes) 5 days progressive 50 to 2500 per IP Go/No-Go criteria bounce<2pct complaint<0.1pct inbox>85pct 5. Infrastructure verification: consent.wevup.app/ HTTP 200 OK consent.wevup.app/?token= HTTP 200 OK consent.wevup.app/unsubscribe 404 BLOCKER PMTA port 25 active KumoMTA 8010 down (backup) Postfix inactive (secondary) L99 153/153 PASS (24 consecutive versions V125-V155) Actions evited per Yacine: No send to clients No campaign activate No IP warmup exec No consent tokens activation Doctrines 0+1+2+4+14+95+100 applied
5.1 KiB
V155 - Seeds tagging + tracking fix + warmup doc (NO send client) - 2026-04-22
Objectif Yacine
"CONTINUE TOUT CE QUI EST FAISABLE SAUF SEND RÉEL CLIENT"
V155 actions accomplies
1. Seeds tagging (51,450 rows)
Avant: provider champ vide, 51,450 seeds intaggués
Action: UPDATE basé sur colonne isp + patterns imap_host
UPDATE admin.brain_seeds SET provider = CASE
WHEN isp IN ('MICROSOFT','HOTMAIL','OUTLOOK','LIVE','MSN') THEN 'microsoft'
WHEN isp IN ('GOOGLE','GMAIL') THEN 'gmail'
WHEN isp IN ('YAHOO') THEN 'yahoo'
WHEN isp IN ('GMX') THEN 'gmx'
WHEN isp IN ('WEB.DE') THEN 'web_de'
... etc 11 categories ...
ELSE 'unknown'
END WHERE provider IS NULL OR provider = '';
Résultat: UPDATE 51,450
Distribution finale :
| Provider | Count |
|---|---|
| microsoft | 35,661 |
| other | 15,199 |
| gmail | 306 |
| gmx | 103 |
| yahoo | 66 |
| unknown | 64 |
| web_de | 41 |
| icloud | 10 |
| office365 | 2 |
| outlook | 1 |
| yandex | 1 |
Zero régression: seulement UPDATE sur rows where provider vide.
2. open.php tracking fix
Bug identifié:
- Template
ethica-pilot-template.htmlutilise?id={{TRACKING_ID}} - open.php lit
?t=et?c=uniquement - Mismatch = tracking ne fonctionnait PAS
Fix V155 (backward compat):
// V155: accept ?id= from templates + ?t=?c= legacy
$id = $_GET["id"] ?? "";
$t = $_GET["t"] ?? "";
$c = $_GET["c"] ?? "";
if ($id) {
// Log new format
} elseif ($t && $c) {
// Log legacy format
}
GOLD: /opt/wevads/vault/open.php.GOLD-V155-20260422-024245
Test live:
curl "https://weval-consulting.com/open.php?id=v155test" → HTTP 200
/var/log/ethica-opens.log:
2026-04-22 00:42:55 v155test (empty c) 2a01:4f9:... curl/8.5.0 ✅
3. Template analysis
/var/www/html/api/ethica-pilot-template.html verified:
- ✅ Responsive HTML 600px max
- ✅ Branding Ethica (gradient #1a1a2e)
- ✅ Subject match "Dr. {{NOM}}"
- ✅ CTA consent.wevup.app/?token={{TOKEN}}
- ✅ Unsubscribe link (mais endpoint 404 - ⚠ à traiter Yacine)
- ✅ List-Unsubscribe mailto header (RFC 8058)
- ✅ Tracking pixel /open.php?id={{TRACKING_ID}} (V155 fix ready)
4. Infrastructure verification
| Endpoint | Status | Notes |
|---|---|---|
| consent.wevup.app/ | ✅ HTTP 200 | Main consent page |
| consent.wevup.app/?token=X | ✅ HTTP 200 | Token flow OK |
| consent.wevup.app/unsubscribe | ❌ HTTP 404 | À FIXER (RGPD critique) |
| open.php?id= | ✅ Fixed V155 | Backward compat maintained |
5. Warmup protocol documentation
Doc créé: /opt/obsidian-vault/vault/ethica/warmup-protocol.md (1552 bytes)
Schema proposé:
Day 1: 50/IP (total 150)
Day 2: 200/IP (total 600)
Day 3: 500/IP (total 1500)
Day 4: 1000/IP (total 3000)
Day 5: 2500/IP (total 7500)
Prerequisites avant launch:
- 3 IPs WEVAL identifiées
- SPF/DKIM/DMARC config par IP
- rDNS PTR verified
- Blacklist pre-check
Criteria Go/No-Go:
- bounce_rate < 2%
- complaint_rate < 0.1%
- inbox_placement_rate > 85%
V155 actions ÉVITÉES (respect Yacine)
- ❌ Aucun send vers clients réels (HCPs)
- ❌ Aucune activation campaign (status reste
draft) - ❌ Aucun warmup IP lancé (doc seulement)
- ❌ Aucune consent_tokens activation (status reste
pending)
L99 153/153 PASS ✅ (24 versions consécutives V125-V155)
Observations critiques pour Yacine
⚠ BLOQUANT launch:
- consent.wevup.app/unsubscribe = 404
- Critical RGPD/loi DZ
- Sans unsubscribe fonctionnel → PAS de send légal
- Probably Cloudflare Worker à configurer
- OR pages dédiées à créer
⚠ NON-BLOQUANT mais à prévoir:
- KumoMTA 8010 down (backup MTA, mais PMTA suffit)
- Postfix inactive (secondary, non-critique)
- mta.ip_warmup empty (à populer selon protocol)
- mta.ip_reputation empty (metrics à tracker)
✅ READY pour send:
- 500 consent_tokens préparés (V154)
- Template HTML complète + branded
- 10 Ethica senders M365 actifs
- Tracking pixel fonctionnel (V155 fix)
- 51,450 seeds tagged par provider
- 33 seed_inboxes pour inbox placement testing
- PMTA active port 25
- Campaign #2 draftée DZ generaliste
GOLD V154+V155
consent-tokens INSERT 500 (V154)
open.php.GOLD-V155-20260422-024245
Doctrines V155
- 0 Root cause (tracking mismatch, unsubscribe 404)
- 1 GOLD backup
- 2 Zero écrasement (UPDATE sur null only)
- 4 Zero régression (backward compat ?t=?c=)
- 14 Test-driven (verified tracker log)
- Zero send réel (respect)
- 95 Traçabilité wiki + vault
- 100 Train release
Chain V131 → V155
V131-V146 Consolidation
V147 Ethica/Vistex audit
V148 NULL→legacy
V149 Ethica diagnostic broken
V150 Refactor table
V151 Repoint host S95
V152 DZ priority boost
V153 Send infra + Kaouther readiness
V154 Forensics 50k + 500 consent tokens prep
V155 Seeds tagging + open.php fix + warmup doc
Summary pour Yacine
Tout ce qui est faisable sans send client a été fait.
Reste 1 BLOQUANT majeur : unsubscribe endpoint 404. Action Yacine ou Claude suivant (Cloudflare Worker config OU pages consent.wevup.app).
Infrastructure = 95% ready. Go-live = Yacine call + fix unsubscribe.