Skip to content

Audit/p0 correctifs - #2

Open
UlysseCarpentier wants to merge 2 commits into
mainfrom
audit/p0-correctifs
Open

UlysseCarpentier wants to merge 2 commits into
mainfrom
audit/p0-correctifs

Conversation

@UlysseCarpentier

Copy link
Copy Markdown
Collaborator

No description provided.

UlysseCarpentier and others added 2 commits August 18, 2026 16:20
…l'audio système n'existe pas

Trois mensonges fonctionnels relevés par l'audit (ROADMAP Phase H).

1. Outlook / Microsoft 365 retiré du sélecteur de fournisseur e-mail
   (Onboarding.tsx + catalogues FR/EN). spec/24 §1.1 l'exclut explicitement :
   Microsoft a retiré les mots de passe d'application IMAP le 30/04/2026, donc
   impasse garantie. OAuth2 reste hors scope. Grille passée à 2 colonnes (4
   fournisseurs). Un utilisateur Outlook passe par « IMAP générique ».

2. Alfred.entitlements / Info.plist réellement nettoyés (spec/12, qui les
   donnait pour faits) : `apple-events` était encore à true et les usage
   descriptions AppleEvents/Calendars encore présentes — alors que spec/02 §0
   justifie l'exclusion d'Apple Calendar par ce retrait qui n'avait jamais eu
   lieu. NSScreenCaptureUsageDescription reste volontairement non ajoutée : rien
   ne déclenche cette permission tant que le helper ScreenCaptureKit n'existe
   pas ; à poser en même temps que lui.

3. Audio système macOS : le repli sur mic_only reste gracieux mais n'est plus
   silencieux. Le défaut produit est `mixed`, donc un Mac en visio ne captait
   jamais l'interlocuteur et sortait un compte-rendu à moitié faux sans aucun
   signal.
   - nouvelles commandes `get_platform` / `supports_system_audio` (le backend
     est la seule autorité sur l'OS, spec/00 — pas un sniff d'user-agent) ;
   - Réglages : sources système désactivées + explication, et la config est
     réalignée sur mic_only si elle disait `mixed` sur une plateforme sans
     audio système (sinon une option grisée apparaissait sélectionnée) ;
   - `audio::start_recording` émet `recording-source-fallback` -> toast
     (App.tsx, via `translate`/`getState` pour lire la langue au moment du
     toast et non au montage).
   Le repli utilise `cfg!` et non `#[cfg]` : les deux branches sont ainsi
   type-checkées par un `cargo check` lancé sous Windows.

tsc --noEmit : OK. cargo check --no-default-features : OK.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
L'audit a trouvé 6 divergences spec <-> code sur 30 modules, dans les deux sens.
C'est le mécanisme qui a produit le bug Outlook : du code livré sans lire la
révision de sa propre spec.

Statut — une seule source de vérité (spec/README.md §Source de vérité du statut) :
le tableau « Modules » tranche, les en-têtes `> **Statut :**` décrivent le
périmètre et non l'avancement. À corriger dans le même commit que le code.

Faux « c'est fait » corrigés :
- spec/README : audio système macOS donné pour ✅ alors qu'aucun helper Swift
  n'existe (le module passe 🚧) ; « modèle small embarqué / offline dès le 1er
  lancement » alors que bundle.resources est vide -> aussi corrigé dans
  README.md, TESTS.md et le commentaire de Cargo.toml ;
- spec/12 : entitlements/Info.plist donnés pour nettoyés (ils ne l'étaient pas —
  cf. commit précédent), NSScreenCaptureUsageDescription explicitement reportée
  avec le helper.

Faux « rien de codé » corrigés : spec/02 (calendrier), spec/27 (auto-update),
spec/28 (projets unifiés), spec/24 (§5 écran de validation + §6 Q&A mails).

Dérives de fond :
- spec/00 : domaines IPC et arborescence d'avant la Phase D, calendrier décrit
  comme « entièrement retiré », suggestions/appels comme « présents ». Et surtout
  l'inventaire des secrets, resté à 2 clés d'API alors que secrets.json contient
  désormais 8 entrées dont un mot de passe IMAP et un refresh token Google — le
  compromis « quasi-clair, OK pour un petit groupe » est à re-trancher (0600 n'est
  posé que sous Unix) ;
- spec/01 : « migrations 001->005 » alors qu'on est à 017 ; table todos décrite
  comme vivante (droppée en 007), suggestions/phone_calls « présentes » (droppées
  en 008), calendar_events « plus alimentée » (recréée en 016). Table des
  migrations complétée, clés de config réelles listées, clés mortes signalées ;
- spec/13 : l'étape « Connexion e-mails » n'était pas décrite (ajoutée, avec la
  question produit qu'elle pose : le pire moment du parcours pour demander un mot
  de passe d'application) ; section « Prioritaire » citée alors que spec/06 l'a
  retirée ;
- spec/03 et spec/11 : documentent le repli audio désormais annoncé et le gating
  des sources dans Réglages ;
- spec/24 §1.1 : dit que l'UI guidée n'existe que dans l'onboarding.

ROADMAP : Phase H P0 -> [x], helper macOS sorti au clair comme tâche à part,
ligne auto-update corrigée (les clés sont bien en place, seul l'amorçage manuel
des testeurs 0.2.x reste).

tsc --noEmit : OK. cargo test --no-default-features : 82 passed.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant