← STATIONSCH 05 — FICHE/CH/05 · ÉCHAP POUR FERMERFREN

Vestige — suivi des rapports d'analyse statique

Un analyseur statique répond à « qu'est-ce qui ne va pas dans ce fichier, maintenant ». Il ne répond pas à la question qui intéresse vraiment une équipe : est-ce nouveau, ou la même chose que nous avons accepté de garder il y a trois mois — et qui l’a acceptée ? Vestige porte cette affirmation, entre la CI et le développeur.

IDENTITÉ
Échelle à trois empreintes, O(P+C)
INGESTION
Idempotente, outbox, SKIP LOCKED
MULTI-TENANCE
RLS PostgreSQL, forcée sur tous les rôles
AUDIT
Chaîné par hachage, imposé par trigger
DÉCISIONS
10 ADR avec options écartées
FIG. 1 — CHEMIN D'INGESTION
SARIF
depuis la CI
RUN + OUTBOX
une transaction
RÉSERVATION
skip locked
RAPPROCHEMENT
échelle
PORTE

↳ rapport identique à l’octet près → le résultat d’origine↳ même clé, rapport différent → 409

RAPPROCHEMENT
32 cas · 0 faux éclatement · 0 fausse fusion
TESTS
23 classes unitaires · 153 méthodes
ISOLATION
Prouvée par un test RLS adversarial
LECTURE
SARIF en flux · mémoire constante

LE POINT DIFFICILE

Un signalement n'est pas un numéro de ligne. Ajoutez douze imports, renommez une méthode, et la ligne 42 devient la ligne 58 — un rapprochement naïf sur règle, fichier et ligne déclare l’ancien problème corrigé et le nouveau introduit. Chaque choix ici arbitre entre fausses fusions et faux éclatements, et les deux tirent en sens inverse.

CE QUE J'AI ÉCARTÉ

La similarité par plongements, et le simple diff. La première n'est pas reproductible d'une exécution à l'autre, donc inexplicable à qui conteste une porte en échec ; le second répond à « qu’est-ce qui a changé » et non à « est-ce le même problème ». L’échelle est déterministe et sa règle de départage est écrite.

CE QUE JE CORRIGERAIS EN PREMIER

L'auteur d'une décision de tri est une chaîne fournie par l'appelant, pas une identité vérifiée — la v1 n'a que des clés d'API à l'échelle de l'organisation, sans authentification par utilisateur. La chaîne prouve qu’une action a eu lieu et n’a pas été modifiée ensuite ; elle ne prouve pas qui l’a faite. L'identité par utilisateur est la prochaine étape qui compte.