Qualité, CI & audits
Ce projet affiche ses notes, y compris les mauvaises. La qualité n'y est pas un badge : c'est un ensemble de barrières qui cassent la build, et un journal public des preuves.
Pipeline CI
Chaque push exécute .github/workflows/ci.yml : gates d'hygiène → ktlint → detekt → tests (:core + :app) → couverture (koverVerify) → Android lint → assemblage debug et release minifié (R8). L'APK release est un artefact CI : la configuration ProGuard est prouvée à chaque push.
Les 9 gates (ci/checks.sh)
| Gate | Ce qu'elle interdit |
|---|---|
| Binaires | APK/AAB ou sorties de build versionnés |
| Scripts jetables | patchs one-off à la racine (l'édit direct est la règle) |
| gradlew | perte du bit exécutable |
| Version | versionName/versionCode non single-sourcés |
| Fréquence | un « 44100 » littéral hors AudioConfig |
| Pureté :core | le moindre import Android dans :core |
| Couleurs | un littéral Color(0x…) hors theme/Color.kt |
| Texte | du texte utilisateur en dur dans un fichier Compose |
| Résurrection | le retour de code mort purgé (Webview/INTERNET compris) |
Tests & couverture
- 202 tests JVM, dont 158 dans
:coreà ≥ 90 % de couverture de ligne (gate CI). - Snapshots dorés DSP : spectre complet à graine fixe, tolérance 1e-9 — toute dérive numérique est détectée.
- Tests analytiques : calibration 0/−20/−60 dBFS, réponses Butterworth (−3,01 dB aux coupures, −48 dB/oct), scalloping de Hann (−1,42 dB mi-bin, corrigé +0,32 dB).
- Tests GPS par scénarios : constantes, rampes, freinage −6 m/s², pertes 1–60 s, σ 0,05–5 m/s, outliers multiples, RMSE lissé < causal < brut, migration sidecar v1/v2/v3.
- Convention de nommage : les tests portent l'ID du constat d'audit qu'ils gèlent ou corrigent (
c1_…,gps2_…) — traçabilité totale.
Limite assumée : zéro test instrumenté à ce jour (la couverture CI ne mesure que :core) ; la vérification appareil est faite manuellement à chaque phase et consignée avec preuves dans AAA-TRACKING.md.
La culture d'audit
V13.1-audit.md— 74 constats avec preuvesfichier:ligne(gelé) ; l'origine de toute la refonte.audit-gps.md— audit dédié de la chaîne de vitesse (GPS-01…GPS-15, gelé).V14-ui-ux-audit.md— audit de la couche présentation : 34 constats sur 11 axes (A− couleur, D typographie, F iconographie), lisible en ligne.V13.2-audit.md— audit de l'état courant : 31 constats, notes par domaine, verdict affiché (B− ingénierie, C instrument).AAA-TRACKING.md— journal d'exécution : chaque phase, chaque commit, chaque déviation (DEV-1…DEV-52) et chaque preuve de gate. Zéro décision invisible.
État actuel, sans maquillage
L'audit courant est clair : la classe de défauts de mesure de la V13.1 est close, mais aucun chiffre affiché n'est encore validé contre une vérité terrain. Constantes GNSS provisoires, indice d'émergence non calibré, zéro test instrumenté, release non signée : c'est écrit, c'est suivi, c'est le travail des prochaines phases (GPS-5, plan 5.x). Un instrument AAA se prouve sur le terrain — pas dans une page web.