Historique des sprints et des sessions¶
Déplacé depuis
CLAUDE.md(2026-09-27) pour alléger le contexte chargé à chaque session. L'état courant du projet vit dansCLAUDE.md§ « État courant du projet » ; ce fichier est l'archive.
Sprints livrés¶
- Sprint 1 (J1-J3, 2026-04-18 → 2026-04-20) — Fondations + deploy + CI. Monorepo pnpm, Docker compose dev, Prisma schema + migration init, seed idempotent (7 stations, 2 glaciers, 2 captages), CI GitHub Actions (lint + typecheck + tests + build), Dockerfiles multi-stage, déploiement Coolify sur VPS Hetzner derrière Traefik + Let's Encrypt.
- Sprint 2 (J4-J7, 2026-04-20 → 2026-04-21) — Backend ingestion + API + incident prod. Pivot LINDAS SPARQL (ADR-007, flux XML OFEV mort découvert à la discovery). Plugin cron 10 min, parser SPARQL, upsert Prisma idempotent. Endpoints
/stations,/stations/:id/measurements,/status,/health. Incident 2026-04-21 (DB prod vidée, cause undetermined) → résolution défensive viaentrypoint.sh+ seed-on-boot, post-mortemdocs/runbooks/incident-2026-04-21.md. - Sprint 3 — Temps 1 (J8-J10) — Scaffold landing page. 6 sections (Hero / Map / KeyMetrics / WhyLindas / ResearchZones / Footer) en stub, design tokens, atomes ABEM, responsive 375 px validé, i18n vue-i18n (FR only).
- Sprint 3 — Temps 2 (J11-J12, 2026-04-21) — Câblage données live clôturé. T2-C1 CORS + useApi composable. T2-C2 status badge wired sur
/status. T2-C3 carte Leaflet avec 7 markers LIVE/RESEARCH. T2-C4 drawer + chart D3 24 h. T2-C5 KeyMetrics live. - Sprint 3 — Temps 3 (J13, 2026-04-22) — Polish technique + 2 incidents prod résolus. Bloc 1 : LinkedIn footer (
2e2fda4) + README v2 (f61df7f). Incident Traefik multi-homing 504 matinal → suppression du réseau custom (be850ae+ runbook8790a53). Side finding archive EACCES silencieux depuis 2026-04-20 → Dockerfile mkdir+chown /app/var avantUSER app, volume renommé-v2(fb1aa0d+ runbook9f735ea). Bloc 2 Lighthouse :robots.txt+sitemap.xml(43c631c), contraste WCAG AA sur tokens SPARQL URI + badge research theme-dark (8bc909f), 6 headers sécurité via snippetnginx-security-headers.confinclus dans server + locations (4bb616f). Scores finaux prod : Desktop 96/100/100/100 · Mobile 90/100/96/100. - Sprint 3 — Temps 4 (J14, 2026-04-22 matin, Bloc 4) — Polish final clôturé. OG + Twitter Card (
e1ef778), screenshots README via Puppeteer versionné (1a85844), STATUS J13 (60ed8c2), PRD reconcilé Bloc 1+2+3 (0cfc949), CLAUDE pickup (45f10bb). Tagv1.0.0-crealpposé + poussé. Prod stable 90s post-swap. - Session Option A (J14, 2026-04-22 après-midi) — Pivot stratégique transparence sourcing. Audit factuel des 3 stations RESEARCH → Bramois
CONFIRMED(documentée crealp.ch), Les Haudères + EvolèneILLUSTRATIVE. ChampStation.sourcingStatustraversé du Prisma (3a1caa6) au DTO (25a6a30) à un atom dédiéASourcingBadgeavec tooltip a11y sur cartes research (4d7a169). Docs : ADR-008 +context/crealp-stations-sourcing.md+ reconcile STATUS/PRD/CLAUDE. 139 tests verts (71 API + 68 web).
Historique des sessions¶
- 2026-04-18 : Context pack (business, domain, data-sources, brief, PRD, architecture overview, data model, API contracts, 6 ADR, design system, conventions). Ajout
internal-projects.md(synthèse rapports CREALP 2022-2024). - 2026-04-20 : US-1.3 Prisma + /health. US-1.6 Dockerfiles + déploiement Coolify live. US-1.4 seed idempotent. US-1.5 CI workflow + badge.
- 2026-04-20 (v2) : Discovery LINDAS → ADR-007. Ingestion SPARQL + cron +
Station.dataSource+IngestionRun. Endpoints/stations,/stations/:id/measurements,/status. - 2026-04-21 : Incident DB vidée + post-mortem + défense entrypoint.sh. Sprint 3 démarré : scaffold landing, design tokens, atomes ABEM, refactor
MStationCard, purge CSS brute, responsive 375 px, design-system.md réconcilié. - 2026-04-21 (Temps 2) : T2-C1 CORS + useApi (
9c06df1). T2-C2 status badge live (8ef2fb1). T2-C3 Leaflet map (e099def). T2-C4 drawer + chart D3 24 h (e7abf18). - 2026-04-22 (J13 — Temps 3) : 8 commits sur
main. Bloc 1 (LinkedIn footer2e2fda4+ README v2f61df7f). Fix Traefik multi-homing 504 (be850ae+ runbook8790a53) — leçon : pas de réseau Docker custom sous Coolify. Fix archive EACCES latent (fb1aa0d+ runbook9f735ea) — leçon :USERnon-root + named volume exigentmkdir+chowndans l'image. Bloc 2 Lighthouse : robots/sitemap (43c631c), contraste WCAG AA (8bc909f), 6 headers sécurité nginx (4bb616f). Lighthouse prod Desktop 96/100/100/100 · Mobile 90/100/96/100. Outils audit créés hors repo :/tmp/axe-runner/(axe-core + CSP smoke Puppeteer). - 2026-04-22 (J14 — Bloc 4 polish final) : 5 commits + tag. OG + Twitter Card (
e1ef778), screenshots README Puppeteer versionné (1a85844), STATUS J13 (60ed8c2), PRD Bloc 1+2+3 shipped (0cfc949), CLAUDE pickup (45f10bb). Tag annotatedv1.0.0-crealpposé + poussé. 130 tests verts. Prod stable 90s post-swap, validation OG + 6 headers sécurité. - 2026-04-22 (J14 — Session Option A : transparence sourcing) : 4 commits (non pushés au moment de la rédaction). Audit factuel stations RESEARCH contre
crealp.ch/monitoring-des-eaux-de-surface→ BramoisCONFIRMED, Les Haudères + EvolèneILLUSTRATIVE. ChampStation.sourcingStatus(Prisma + migration additive3a1caa6), DTO verbatim SCREAMING_SNAKE (25a6a30), atomASourcingBadge+ tooltip CSS a11yrole=tooltip+aria-describedbysur cartes research (4d7a169). Docs : ADR-008 +context/crealp-stations-sourcing.md+ reconcile STATUS/PRD/CLAUDE (<hash>en cours). 139 tests verts (71 API + 68 web). Leçons : pattern de provenance typée extensible (MétéoSuisse, GLAMOS) ; palette Tailwind defaults pour variante unique (respect ADR-002) ; tooltip CSS sans lib tant que scope layout reste simple.