feat: lint_audit.py calibre + TYPES_CANONIQUES source unique
- lint_audit.py : moteur d'audit groupe par data quality dimensions (completeness, accuracy, consistency, validity, uniqueness, freshness) - charger() : passe #type globale (voit tous les types reels, dont les intrus) - VAL-type : valide le label type contre la liste canonique (ignore container) - dependDe elargi (domaine +service, portee +outil) : faux positif supprime - TYPES_CANONIQUES dans trilium_api.py : source unique partagee Lint + create_entite - create_entite aligne sur TYPES_CANONIQUES, couvre les 10 types connaissance/technique Etage 1 lecture seule : 348 notes, 29 anomalies reelles, 0 faux positif.
This commit is contained in:
@@ -0,0 +1,152 @@
|
||||
# RAPPORT LINT - Context Continuity - 2026-07-03 08:39
|
||||
# ETAGE 1 (lecture seule) - groupe par data quality dimension
|
||||
|
||||
## Inventaire
|
||||
- Notes chargees : 336
|
||||
- backlogItem : 96
|
||||
- composantLogiciel : 12
|
||||
- concept : 2
|
||||
- contexteReprise : 11
|
||||
- contrainte : 2
|
||||
- convention : 4
|
||||
- conversation : 29
|
||||
- decision : 43
|
||||
- documentation : 25
|
||||
- historiqueItem : 90
|
||||
- infrastructure : 1
|
||||
- outil : 2
|
||||
- principe : 3
|
||||
- projet : 2
|
||||
- service : 4
|
||||
- skill : 10
|
||||
|
||||
## Synthese : 32 anomalies
|
||||
Par dimension : completeness=0, accuracy=2, consistency=0, validity=25, uniqueness=3, freshness=2
|
||||
Par bac d'action : AUTO=4, SIGNALER=7, JUGEMENT=21
|
||||
|
||||
## COMPLETENESS (0 anomalies)
|
||||
Les champs obligatoires sont remplis ET les entites attendues sont toutes saisies (exhaustivite).
|
||||
Controles deterministes : COMP-labels
|
||||
[delegue agent] COMP-exhaustivite : Entites manquantes vs realite du projet (ex : backlog incomplet)
|
||||
|
||||
## ACCURACY (2 anomalies)
|
||||
Le niveau de la donnee reflete la realite (bon rangement, contenu conforme au type, statut a jour).
|
||||
Controles deterministes : ACC-rangement, ACC-decision
|
||||
[delegue agent] ACC-contenu-type : Le contenu redige d'une note reflete-t-il bien son type
|
||||
|
||||
- [ACC-decision | JUGEMENT] (projet ContextContinuity) (f9qMQOFVyVCy)
|
||||
12 decisions actives sur ContextContinuity : possibles v1 non revisees
|
||||
-> revue : tisser ~revise, passer les v1 obsoletes en revisee
|
||||
- [ACC-decision | JUGEMENT] (projet SlidingAutomation) (XOtJDSeSE8Ny)
|
||||
23 decisions actives sur SlidingAutomation : possibles v1 non revisees
|
||||
-> revue : tisser ~revise, passer les v1 obsoletes en revisee
|
||||
|
||||
## CONSISTENCY (0 anomalies)
|
||||
Coherence dans le temps et a travers les entites (vocabulaire courant, informations repetees a jour partout).
|
||||
Controles deterministes : CONS-vocab
|
||||
[delegue agent] CONS-chiffres-croises : Une information repetee (ex : nombre de tools) est-elle a jour dans toutes les notes
|
||||
|
||||
## VALIDITY (25 anomalies)
|
||||
Les valeurs et relations respectent les regles en vigueur (enums, conventions de nommage, ontologie des relations).
|
||||
Controles deterministes : VAL-enum, VAL-nommage, VAL-relation
|
||||
|
||||
- [VAL-enum | AUTO] Fix Python 3.9 : Union[X|Y] non supporté (LbUxsCkI5FQw)
|
||||
typeHistorique='Contrainte découverte' (casse/accent)
|
||||
-> corriger en 'Contrainte decouverte'
|
||||
- [VAL-enum | AUTO] Fix polices : détection via assets/fonts/ (pas fc-list) (3GmGgfoK4aJI)
|
||||
typeHistorique='Fait établi' (casse/accent)
|
||||
-> corriger en 'Fait etabli'
|
||||
- [VAL-enum | AUTO] Fix semantic key : self.theme['semantic'] (i5M20n936xmD)
|
||||
typeHistorique='Fait établi' (casse/accent)
|
||||
-> corriger en 'Fait etabli'
|
||||
- [VAL-enum | AUTO] POST /etapi/notes inexistant sur TriliumNext 0.95 (SCYdo6cV20js)
|
||||
typeHistorique='Contrainte découverte' (casse/accent)
|
||||
-> corriger en 'Contrainte decouverte'
|
||||
- [VAL-nommage | SIGNALER] Configurer l'accès SSH (port 2222) et tester le clone via SSH (VBTUmbai1IAE)
|
||||
label projet='Code Versioning' contient un espace
|
||||
-> renommer sans espace + repercuter partout
|
||||
- [VAL-nommage | SIGNALER] Configurer le reverse proxy HTTPS pour forgejo.bertha-cloud.fr (oUFzjF3Ef0UU)
|
||||
label projet='Code Versioning' contient un espace
|
||||
-> renommer sans espace + repercuter partout
|
||||
- [VAL-nommage | SIGNALER] Créer le premier dépôt de test et valider le workflow git (e5rBCaJHEP8a)
|
||||
label projet='Code Versioning' contient un espace
|
||||
-> renommer sans espace + repercuter partout
|
||||
- [VAL-nommage | SIGNALER] Finaliser la configuration initiale de Forgejo (base de données, utilisateur admin, etc.) (VN7HUNymHGYn)
|
||||
label projet='Code Versioning' contient un espace
|
||||
-> renommer sans espace + repercuter partout
|
||||
- [VAL-rel-portee | JUGEMENT] patch_pptx_theme (Eh2R3GGFdt1v)
|
||||
~dependDe : cible type=outil hors portee ['composantLogiciel', 'service']
|
||||
-> verifier la pertinence
|
||||
- [VAL-rel-portee | JUGEMENT] render_engine.py (PMdUlYZqzgn6)
|
||||
~dependDe : cible type=outil hors portee ['composantLogiciel', 'service']
|
||||
-> verifier la pertinence
|
||||
- [VAL-rel-portee | JUGEMENT] Architecture pipeline : Narrator → Designer (ou Free Designer) → Encoder → render_engine_v2.py (LxsGi9O4wPKT)
|
||||
~impacte : cible type=ComposantLogiciel hors portee ['composantLogiciel', 'service']
|
||||
-> verifier la pertinence
|
||||
- [VAL-rel-portee | JUGEMENT] Design system v2 « PR Editorial » : 21 layouts + freeform, charte navy/coral/glacier, Cambria/Calibri (EWq0H6IhfcAG)
|
||||
~impacte : cible type=ComposantLogiciel hors portee ['composantLogiciel', 'service']
|
||||
-> verifier la pertinence
|
||||
- [VAL-rel-portee | JUGEMENT] Freeform : palier 3 (primitives + helpers charte), charte IMPOSÉE (tokens couleur uniquement, pas de hex) (bwcIY5LNiCI2)
|
||||
~impacte : cible type=ComposantLogiciel hors portee ['composantLogiciel', 'service']
|
||||
-> verifier la pertinence
|
||||
- [VAL-rel-portee | JUGEMENT] Refonte majeure v1→v2 du pipeline : moteur, design system et facilitator entièrement reconstruits (B6ZL5ZO7PjxG)
|
||||
~impacte : cible type=ComposantLogiciel hors portee ['composantLogiciel', 'service']
|
||||
-> verifier la pertinence
|
||||
- [VAL-rel-portee | JUGEMENT] render_engine durci : org_chart et renderers tolèrent les nœuds en string OU dict (anti-crash Encoder) (Rnu3kQ178XeY)
|
||||
~impacte : cible type=ComposantLogiciel hors portee ['composantLogiciel', 'service']
|
||||
-> verifier la pertinence
|
||||
- [VAL-rel-domaine | JUGEMENT] Deck 35 slides (data-domain-pitch-deck) rendu sans crash après fix org_chart string/dict (32SqGgA5SzCV)
|
||||
~illustre : source type=historiqueItem hors domaine ['composantLogiciel', 'concept', 'service']
|
||||
-> verifier la pertinence
|
||||
- [VAL-rel-portee | JUGEMENT] Deck 35 slides (data-domain-pitch-deck) rendu sans crash après fix org_chart string/dict (32SqGgA5SzCV)
|
||||
~illustre : cible type=ComposantLogiciel hors portee ['concept']
|
||||
-> verifier la pertinence
|
||||
- [VAL-rel-domaine | JUGEMENT] Encoder laisse passer du Markdown brut (**gras**) dans les valeurs texte (visible slide 19) (sL21Grl1N62Q)
|
||||
~contraintPar : source type=historiqueItem hors domaine ['composantLogiciel', 'decision']
|
||||
-> verifier la pertinence
|
||||
- [VAL-rel-portee | JUGEMENT] Encoder laisse passer du Markdown brut (**gras**) dans les valeurs texte (visible slide 19) (sL21Grl1N62Q)
|
||||
~contraintPar : cible type=composantLogiciel hors portee ['contrainte', 'principe']
|
||||
-> verifier la pertinence
|
||||
- [VAL-rel-domaine | JUGEMENT] Mode collage /coller validé : les commandes dans un texte collé ne sont pas interprétées (E3DDmSw5bFsH)
|
||||
~illustre : source type=historiqueItem hors domaine ['composantLogiciel', 'concept', 'service']
|
||||
-> verifier la pertinence
|
||||
- [VAL-rel-portee | JUGEMENT] Mode collage /coller validé : les commandes dans un texte collé ne sont pas interprétées (E3DDmSw5bFsH)
|
||||
~illustre : cible type=composantLogiciel hors portee ['concept']
|
||||
-> verifier la pertinence
|
||||
- [VAL-rel-domaine | JUGEMENT] Persistance et rechargement exact du plan compact validés (anti-régression entre sessions) (EwfkXXLfVdyN)
|
||||
~illustre : source type=historiqueItem hors domaine ['composantLogiciel', 'concept', 'service']
|
||||
-> verifier la pertinence
|
||||
- [VAL-rel-portee | JUGEMENT] Persistance et rechargement exact du plan compact validés (anti-régression entre sessions) (EwfkXXLfVdyN)
|
||||
~illustre : cible type=composantLogiciel hors portee ['concept']
|
||||
-> verifier la pertinence
|
||||
- [VAL-rel-domaine | JUGEMENT] Forgejo (ArTsdwSCqXod)
|
||||
~dependDe : source type=service hors domaine ['composantLogiciel']
|
||||
-> verifier la pertinence
|
||||
- [VAL-rel-portee | JUGEMENT] Forgejo (ArTsdwSCqXod)
|
||||
~dependDe : cible type=outil hors portee ['composantLogiciel', 'service']
|
||||
-> verifier la pertinence
|
||||
|
||||
## UNIQUENESS (3 anomalies)
|
||||
Absence de doublons.
|
||||
Controles deterministes : UNIQ-doublon
|
||||
|
||||
- [UNIQ-doublon | SIGNALER] installation réussie de forgejo (via gitea) en docker sur synology (nAxyy3POFpgr)
|
||||
2 notes identiques (type=historiqueItem projet=CodeVersioning) : ['nAxyy3POFpgr', 'e2TZu6UWdVcO']
|
||||
-> fusionner ou supprimer les doublons
|
||||
- [UNIQ-doublon | SIGNALER] post /etapi/notes inexistant sur triliumnext 0.95 (SCYdo6cV20js)
|
||||
2 notes identiques (type=historiqueItem projet=SlidingAutomation) : ['SCYdo6cV20js', 'PkKQcJZUOSFk']
|
||||
-> fusionner ou supprimer les doublons
|
||||
- [UNIQ-doublon | SIGNALER] synoinfo.conf unique doit rester synology_rtd1296_ds220j (B4cW13Ell9El)
|
||||
2 notes identiques (type=historiqueItem projet=SlidingAutomation) : ['B4cW13Ell9El', 'KCecvxr2KUNG']
|
||||
-> fusionner ou supprimer les doublons
|
||||
|
||||
## FRESHNESS (2 anomalies)
|
||||
Les entites ne portent pas un etat perime (anciennete anormale, non-cloture).
|
||||
Controles deterministes : FRESH-staleness
|
||||
|
||||
- [FRESH-conversation | JUGEMENT] [Claude Sonnet 4.6] 2026-06-01 22:35 — Session 2026-06-01 - Slide 1 cover_split + Trilium install (DbgPmpROLCDR)
|
||||
conversation 'en-cours' non cloturee depuis 31 j
|
||||
-> cloturer si terminee
|
||||
- [FRESH-conversation | JUGEMENT] [Le Chat Large] 2026-05-30 22:30 — Reprise post-doc et style (zJZwyQbOMORY)
|
||||
conversation 'en-cours' non cloturee depuis 33 j
|
||||
-> cloturer si terminee
|
||||
Reference in New Issue
Block a user