PRISME France 2030 · Culture & IA

Plan d’intégration — infra agenda (calendar)

Vérifier la maturitéSpecDoc. générale

Audit cohérence SPECs × cible × Serveur Outils Grainerie (2026-05-27)

#Sujet (titre GitLab)Statut (2026-05-27)Lien
3106AG-3 — includes racine Configuration (docker compose)Fermé3106
3107AG-4 — CalDAV sabre dav + TraefikOuvert (smoke DAV restant)3107
3108AG-5 — Webmail PostgreSQL prodOuvert (preuve worker 24 h)3108
3109AG-7 — Staging agenda-stageOuvert (smoke HTTPS Traefik)3109
3110Sidecars agenda-stack-completeOuvert (Infisical .env)3110
3111Spike Marty CPU + CoturnOuvert (recette Traefik / build lab)3111
3112Snapshot runtime ↔ diagrammesOuvert (collect-spok-readonly complet)3112
3113CI drift fork → cibleFermé3113

Objectif

Reprendre toute la stack agenda documentée et composée dans l’atelier fork, la rendre versionnée et déployable via le mono-dépôt Grainerie (cible), et la suivre dans sans confondre avec les vagues n8n/Baserow (V4–V6).

Principe : pas de breaking change sur app.grainerie.netlib.re ; services additionnels (CalDAV, webmail, staging) par profils Compose ou include commentés, comme Authentik/Infisical (V9).

Référence — stack Qwik « production » (atelier)

Fichier Configuration (docker compose.production) (inclut Configuration (docker compose.collab ws)) : modèle opérationnel après déploiements 2026 sur app.grainerie.netlib.re.

Cartographie des sources

ZoneEmplacementRôle
Atelier (Git séparé)forkCode Qwik, specs, docker
Pont GrainerieConfiguration (docker compose.grainerie)include → Configuration (docker compose)
Canon infra versionnéagendaConfiguration (docker compose) + include Configuration (docker compose.collab ws) + docker (fragments dev-infra…)
Agrégateur calendrierConfiguration (docker compose)agenda + vespa
Racine stackConfiguration (docker compose)include agenda + vespa (pas encore dev-infra / staging)

Matrice services (atelier → cible → compose racine → Serveur Outils Grainerie)

Service / conteneurFragment atelier (docker)Fichiers agenda (racine ou docker)Inclus racine Configuration (docker compose)Serveur Outils Grainerie (état connu 2026-05-23)
agenda-collab-wsConfiguration (docker compose.collab ws) (include production)agenda (Configuration (docker compose.collab ws), Dockerfile.collab-ws)✅ (include racine Configuration (docker compose))🔶 si déployé (collab)
agenda (Qwik prod)Configuration (docker compose.production) / fragment racineConfiguration (docker compose)✅ healthy
agenda-icsidemConfiguration (docker compose)
apididemConfiguration (docker compose)✅ (si déployé)
vespaConfiguration (docker compose.vespa)Configuration (docker compose)✅ (fenêtre 2026-04-27)
agenda-caldav-dbConfiguration (docker compose.dev infra)Configuration (docker compose.dev infra)✅ runtime (hors agrégateur)
agenda-caldav-server / agenda-caldavdev-infra + route dav dans Configuration (docker compose.traefik.qwik)Dockerfile.caldav, caldav🔶 DB sans route Traefik documentée dans agrégateur
agenda-webmail-db + agenda-webmail-workerdev-infra, Configuration (docker compose.webmail), stack complètePostgreSQL uniquement✅ runtime PG
agenda-marty-coordinator (Redis)dev-infra — service agenda-mac-redisdev-infra✅ runtime (projet Compose dédié -p agenda-mac)
agenda-stageConfiguration (docker compose.staging) (include agenda-stack-complete)Configuration (docker compose.staging) + Configuration (docker compose.agenda stack complete)⚠️ aligner chemins Serveur Outils Grainerie (agenda)
marty-postgresConfiguration (docker compose.agenda stack complete)Configuration (docker compose.agenda stack complete)🔶 si stack complète déployée
marty-coordinator (Node BFF)Configuration (docker compose.marty stack)Configuration (docker compose.marty stack), marty coordinator🔶 spike Marty CPU
marty-yjsidemidem, marty yjs🔶 idem
coturn (TURN)profil turn dans marty-stackcoturn🔶 optionnel P2P
Traefik Qwik / Caddy (option A)Configuration (docker compose.traefik.qwik)copie sous dockerNon — prod = image Node Qwik (Dockerfile.agenda.production)

Écart principal : les fragments dev-infra, webmail, staging et CalDAV Traefik existent sous docker (alignés fork) mais ne sont pas raccordés à l’agrégateur racine ; Serveur Outils Grainerie exécute une partie en parallèle (compose manuel ou ancien bundle). Processus : toute évolution fork/docker/docker-compose.production.ymlICS) doit se refléter dansinfrastructure/cible/agenda/docker-compose.yml` dans la même session ou AG-1.

Décision webmail (2026-05-27) : stockage métier webmail uniquement PostgreSQL (docker-compose.webmail.yml, postgres:16, même schéma que dev-infraagenda-stack-complete). Le worker et les tests n’acceptent que les variables WEBMAIL_DB_, WEBMAIL_PG_` et secrets documentés.

Étapes AG-0 → AG-9

IDTimingActionGA / gardeCritère de validation
AG-0` | ☀️ | Cartographie + rapport daté | GA2 | AGENDA INFRA INTEGRATION PLAN 2026 05 23 à jour
AG-1☀️Procédure promotion atelier → cible : après MR dans fork, rsync ou script des fichiers *, Dockerfiles, worker référencés par composeGA2, external-git-ateliersDiff docker ↔ docker documenté ; pas de régression compose config
AG-2☀️V1 : scan secrets CALDAV_*, WEBMAIL_*, STAGE_*, VESPA_* ; MAJ .env.exampleGA3scan-compose-secret-keys.py --v1-1-bundle inclut fragments agenda
AG-3☀️Compose racine : ajouter include commenté vers Configuration (docker compose.dev infra) (profils dev-infra, cpi, webmail, mac) + doc dans READMEGA4 biscible && docker compose config) OK avec et sans décommentaire
AG-4🌙CalDAV : déployer agenda-caldav + caldav-db ; route Traefik dav) ; smoke WebDAV/CalDAVGA4, pas down stack entièrecurl -k / client CalDAV sur https://app.grainerie.netlib.re/dav/
AG-5🌙Webmail : déploiement PostgreSQL (webmail-db + worker) ; preuve worker (imap-worker.mjs logs JSON)GA4Healthchecks DB + worker stable 24h
AG-6🌙Marty coordinator (Redis) : inclure dans compose modulaire si l’app l’exige en prodGA4redis-cli ping + spec MAC
AG-7🌙Staging : soit intégrer agenda-stage au plan (host app-stage.grainerie.netlib.re), soit arrêter conteneur orphelinGA4Plus de agenda-stage fantôme OU staging documenté + HTTPS smoke
AG-8☀️Vespa : package vespa-application ; npm run vespa:feed ; BFF searchApplicationStatus OK ; recherche BM25 smoke
AG-9☀️/🔶Produit : tickets RT-LOG / AUTHK agenda (docs) — hors infra pure, lien vague C / epic AUTHK-008GA5 si BaserowBacklog aligné SUIVI

Raccordement aux vagues V0–V9

VagueLien AG
V1AG-2 secrets CalDAV / webmail / staging
V2Rebuild images agenda, agenda-ics, agenda-caldav (tags pin)
V9.1AG-3/4/5/6 : compléter l’agrégateur modulaire (comme Authentik commenté)
V9.3Middlewares authentik@docker sur agenda (déjà préparés en commentaires)
Vague C (AUTHK)OIDC agenda — specs atelier, pas bloquant AG-4

Priorité relative au plan 2026-05-23 : après P0 GA6 Router et P1 V8.4 cron — traiter AG-3 ☀️ puis AG-4–7 🌙 par fenêtre maintenance.

Commandes utiles (☀️, sans lifecycle prod)

# Config locale agrégateur + agenda
(cd infrastructure/cible && docker compose -f docker-compose.yml config)
# Config avec dev-infra (après AG-3)
(cd infrastructure/cible && docker compose -f docker-compose.yml \
  -f agenda/docker/docker-compose.dev-infra.yml --profile dev-infra config)
# Diff atelier ↔ cible (docker)
diff -ru external/calendar/fork/docker/ infrastructure/cible/agenda/docker/ | less
# Pont atelier
docker compose -f external/calendar/docker-compose.grainerie.yml config

Serveur Outils Grainerie : toute relance agenda / CalDAV / webmail via SSH + services nommés uniquement .

Références specs atelier (lecture agent)

SujetSpec / doc (sous docs ou fork)
WebmailSPEC WEBMAIL MAIL ASSISTANT MODULE
CalDAVCPI-016/017 — Configuration (docker compose.dev infra), traefik.qwik dav
Traefik / ICSTRAEFIK BASEROW WEBSOCKET G17, RECETTE SSH SPOK TRAEFIK ICS
Déploiement QwikPLAN DEPLOIEMENT QWIK (fork)

Maintenu avec le suivi SUIVI MIGRATION TODO — section Annexe AG.