fix(dry-run) : garantir une simulation sans persistance #24

Merged
AntoineVe merged 4 commits from fix/dry-run-source-state into main 2026-09-11 12:00:40 +02:00
Owner

Résumé

Clôture #19 en définissant un contrat strict pour --dry-run :

  • les lectures restent autorisées, mais les états RSS et Pronote ne sont pas écrits sur disque ;
  • les sorties CalDAV et XMPP conservent leur comportement de simulation existant ;
  • PRONOTE_AUTH_MODE=qr_token est refusé avant toute construction du client, car sa rotation distante ne permet pas une simulation locale cohérente ;
  • l’aide CLI, le README, le guide d’exploitation, le guide développeur et le TODO décrivent désormais le même contrat.

Décisions

L’état RSS utilise un overlay mémoire pendant le run afin de préserver le résultat fonctionnel sans modifier .blog_rss_state.json. Le stockage d’authentification sait également fonctionner en mémoire, mais le couple dry-run + qr_token est volontairement rejeté avant connexion pour éviter toute divergence entre le token distant rotatif et le fichier local.

Validation

  • 703 passed, couverture totale 94.98 % ;
  • ruff check . ;
  • ruff format --check . ;
  • mypy . en mode strict ;
  • bandit -q -r pronote_sync/ ;
  • pre-commit run --all-files, incluant detect-secrets ;
  • aucune connexion réseau réelle utilisée par les tests.

La branche contient quatre commits atomiques : état mémoire, câblage de composition, refus QR/token, puis contrat CLI/documentation.

## Résumé Clôture #19 en définissant un contrat strict pour `--dry-run` : - les lectures restent autorisées, mais les états RSS et Pronote ne sont pas écrits sur disque ; - les sorties CalDAV et XMPP conservent leur comportement de simulation existant ; - `PRONOTE_AUTH_MODE=qr_token` est refusé avant toute construction du client, car sa rotation distante ne permet pas une simulation locale cohérente ; - l’aide CLI, le README, le guide d’exploitation, le guide développeur et le TODO décrivent désormais le même contrat. ## Décisions L’état RSS utilise un overlay mémoire pendant le run afin de préserver le résultat fonctionnel sans modifier `.blog_rss_state.json`. Le stockage d’authentification sait également fonctionner en mémoire, mais le couple `dry-run` + `qr_token` est volontairement rejeté avant connexion pour éviter toute divergence entre le token distant rotatif et le fichier local. ## Validation - `703 passed`, couverture totale `94.98 %` ; - `ruff check .` ; - `ruff format --check .` ; - `mypy .` en mode strict ; - `bandit -q -r pronote_sync/` ; - `pre-commit run --all-files`, incluant `detect-secrets` ; - aucune connexion réseau réelle utilisée par les tests. La branche contient quatre commits atomiques : état mémoire, câblage de composition, refus QR/token, puis contrat CLI/documentation.
AntoineVe added 4 commits 2026-09-11 07:47:22 +02:00
AntoineVe force-pushed fix/dry-run-source-state from 9e968dd522 to 0dd4ee68c1 2026-09-11 11:59:24 +02:00 Compare
AntoineVe merged commit d124f78b55 into main 2026-09-11 12:00:40 +02:00
Sign in to join this conversation.
No Reviewers
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: AntoineVe/college-infos#24