You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Audit Observatoire-1-Initiation (Cas 1 Bumble) : pre-registration exemplaire et arithmetique exacte, mais la moitie attaques du verdict n est pas auditable (opposes jamais committes) #18858
Audit read-only, zéro LLM, zéro réseau (aucune re-collecte : l'audit rejoue les sorties committées et l'arithmétique du verdict). Suite de la série #18390.
Contrôle positif — la chaîne de pré-inscription est exemplaire, et l'arithmétique du verdict est exacte de bout en bout
La chaîne pré-inscription → amendements → livraison est datée et tenue : pré-inscription c.5698503026 (16/09 14:10Z), amendement n°1 correction de date (14:25Z, déploiement réel 2024-04-30 — la fenêtre initiale aurait absorbé 6 semaines de pré-rollout), pilote v1 retiré (verdict dégénéré mesuré, non livré), amendement n°2 pipeline v2 figé AVANT re-collecte (17:20Z), PR feat(observatoire,#16410): Cas 1 — Bumble Opening Moves — DiD imparfait sur avis datés #16431 mergeée 17/09 20:42Z. Les fenêtres du carnet (pré 2023-10-15→2024-04-29, post 2024-05-15→2024-11-15, contrôle r/hingeapp), les 6 catégories et le gate de verdict sont mot pour mot ceux du fil.
L'instrument est rebranché, pas réécrit — mesuré : zéro redéfinition des symboles de l'instrument dans le code du carnet (build_aif_graph, Enonce, to_dung_af, d_struct, d_sem, split_half, to_rdf, AIFGraph : 0 occurrence de def/class), et _dated_graphs_mod.py (789 l.) porte exactement les définitions publiques du carnet Instrument G_t^arg -> G_{t+1}^arg : graphes d'argumentation datés sur le substrat AIF/Dung, avec plancher de bruit obligatoire #13310. La neutralisation C3 est une divergence unique, assumée et documentée (cellule 10 + amendement n°2).
Tout se recalcule : 216 classifications = 4×54 (seaux [9,9,9,9,9,9] imprimés) ; les I-nodes par niveau position (4/5/4/3) = les catégories distinctes non nulles du tableau de distribution ; DiD(noeuds) = 0.200−0.250 = −0.050 ; DiD(attaques) = 1.000−0.750 = +0.250 ; planchers moyens = (0.000+0.250)/2 = 0.125 et (0.000+1.000)/2 = 0.500 ; OPENING_MOVE_REACT = 0 dans les quatre cellules — la « signature absente » de la conclusion est exacte. Verdict INCONCLUSIVE tranché et imprimé — c'est l'item « à vérifier à la fermeture » laissé par le spot-check du 27/09 (c.5853638796) : il est levé.
Discipline dataset tenue au-delà de l'engagement : zéro verbatim committé (l'engagement autorisait ≤5 par cellule), zéro /u/ résiduel, les seules URL des sorties sont les IRI de namespace AIF (arg.dundee.ac.uk/aif#). Le prélèvement « posts récents par seau » (sort=desc&sort_type=created_utc + 9 premiers) est énoncé en prose §3 et sa trace est visible et cohérente (date_min Bumble_pre 2023-11-16 = fin du seau 1, bornes sans chevauchement).
Défaut 1 (principal) — la moitié « attaques » du verdict n'est pas auditable depuis l'artefat
Le mot opposes apparaît 0 fois dans les sorties committées. Or la moitié du verdict en dépend : les comptes CA (texte : 0/63/7/53 ; position : 0/9/3/2), DiD(attaques) = +0.250 et le plancher attaques = 0.500 dérivent tous des classifications opposes — qui ne survivent nulle part sous forme d'agrégat. Le tableau de distribution committé (cellule 9) ne porte que cats. Conséquence : un auditeur peut re-vérifier la moitié « nœuds » du verdict (I-nodes ↔ distribution), mais doit croire sur parole la moitié « attaques ». Pour un cas livré sous un protocole dont la règle est que le barreau est écrit à côté de l'affirmation (#13309 §1), la chaîne de preuve du verdict devrait être intégralement dérivable depuis l'artefact.
Réparation proposée : une seconde table de distribution opposes (compte de textes s'opposant à chaque catégorie, par cellule) à côté de la table cats — agrégats seuls, conforme à la politique dataset. Rien d'autre ne bouge.
Défaut 2 — le plancher split-half est une réalisation unique non reproductible
Le plancher est calculé sur une seule réalisation du split par bras, sans seed (« une seule réalisation par bras, fidèle à #13310 »). Les tirages observés (Bumble 0.000, Hinge 0.250 en nœuds ; 0.000 et 1.000 en attaques) montrent la variance du tirage : le seuil du gate attaques (0.500) est lui-même un tirage d'une variable qui peut valoir 0.000. Avec DiD(attaques) = +0.250, un tirage de plancher < 0.200 ferait basculer le verdict. À ces marges le verdict ne change pas, mais le seuil n'est pas rejouable : deux exécutions du même carnet sur les mêmes données peuvent produire deux verdicts différents. Le défaut est hérité du design de l'instrument (#13310) plus que du cas — à consigner sur les deux.
Défaut 3 (mineur) — la marge +0.05 du gate n'est pas dans la sortie imprimée
L'amendement n°2 fixe le gate à DiD > plancher + 0.05 (nœuds ET attaques). La cellule 11 imprime DiD − plancher (−0.175 / −0.250) sans le +0.05. Verdict inchangé à ces marges (−0.225 / −0.300 resteraient négatifs), mais le critère imprimé n'est pas exactement le critère signé — une ligne à réaligner.
Genèse corrigée (leçon des audits précédents)
Entré au dépôt le 17/09 (PR #16431, merge 20:42Z ; arc #16410 : pré-inscription → v1 retiré → v2), dernier toucher le 25/09 (renumérotation série 47b7c0e26). Daté ici par l'API du dépôt distant — le checkout local est un clone shallow dont le log s'arrête à une greffe du 24/09 (même artefact qui a faussé les dates d'entrée des audits ontologies, errata #18656/#18658/#18825).
Vérification (rejouable)
# aucune redéfinition de l'instrument dans le carnet
python - <<'EOF'import jsonnb = json.load(open('MyIA.AI.Notebooks/SymbolicAI/Argument_Analysis/Argument_Analysis_Observatoire-1-Initiation.ipynb', encoding='utf-8'))code = '\n'.join(''.join(c['source']) for c in nb['cells'] if c['cell_type']=='code')print({s: code.count(s) for s in ['def build_aif_graph','class Enonce','def to_dung_af','def d_struct','def split_half']})# -> tous 0EOF# opposes absent des sorties committées : extraire les outputs et compter 'opposes' -> 0# arithmétique : cellule 10 -> DiD(noeuds) 0.200-0.250=-0.050 ; cellule 11 -> planchers (0+0.25)/2, (0+1)/2
[CLAIMED] lane myia-po-2026:CoursIA -- réparation défaut 1 (table distribution opposes par cellule à côté de cats, agrégats seuls) + défaut 3 (ligne imprimée du gate réalignée sur DiD > plancher + 0.05). Défaut 2 (split-half seed) = mur instrument #13310, consigné, hors périmètre ce fix. paths: MyIA.AI.Notebooks/SymbolicAI/Argument_Analysis/Argument_Analysis_Observatoire-1-Initiation.ipynb
Audit du carnet
Argument_Analysis_Observatoire-1-Initiation.ipynb(Cas 1 Bumble « Opening Moves »)Audit read-only, zéro LLM, zéro réseau (aucune re-collecte : l'audit rejoue les sorties committées et l'arithmétique du verdict). Suite de la série #18390.
Contrôle positif — la chaîne de pré-inscription est exemplaire, et l'arithmétique du verdict est exacte de bout en bout
build_aif_graph,Enonce,to_dung_af,d_struct,d_sem,split_half,to_rdf,AIFGraph: 0 occurrence dedef/class), et_dated_graphs_mod.py(789 l.) porte exactement les définitions publiques du carnet Instrument G_t^arg -> G_{t+1}^arg : graphes d'argumentation datés sur le substrat AIF/Dung, avec plancher de bruit obligatoire #13310. La neutralisation C3 est une divergence unique, assumée et documentée (cellule 10 + amendement n°2).OPENING_MOVE_REACT= 0 dans les quatre cellules — la « signature absente » de la conclusion est exacte. Verdict INCONCLUSIVE tranché et imprimé — c'est l'item « à vérifier à la fermeture » laissé par le spot-check du 27/09 (c.5853638796) : il est levé./u/résiduel, les seules URL des sorties sont les IRI de namespace AIF (arg.dundee.ac.uk/aif#). Le prélèvement « posts récents par seau » (sort=desc&sort_type=created_utc+ 9 premiers) est énoncé en prose §3 et sa trace est visible et cohérente (date_min Bumble_pre 2023-11-16 = fin du seau 1, bornes sans chevauchement).Défaut 1 (principal) — la moitié « attaques » du verdict n'est pas auditable depuis l'artefat
Le mot
opposesapparaît 0 fois dans les sorties committées. Or la moitié du verdict en dépend : les comptes CA (texte : 0/63/7/53 ; position : 0/9/3/2),DiD(attaques) = +0.250et leplancher attaques = 0.500dérivent tous des classificationsopposes— qui ne survivent nulle part sous forme d'agrégat. Le tableau de distribution committé (cellule 9) ne porte quecats. Conséquence : un auditeur peut re-vérifier la moitié « nœuds » du verdict (I-nodes ↔ distribution), mais doit croire sur parole la moitié « attaques ». Pour un cas livré sous un protocole dont la règle est que le barreau est écrit à côté de l'affirmation (#13309 §1), la chaîne de preuve du verdict devrait être intégralement dérivable depuis l'artefact.Réparation proposée : une seconde table de distribution
opposes(compte de textes s'opposant à chaque catégorie, par cellule) à côté de la tablecats— agrégats seuls, conforme à la politique dataset. Rien d'autre ne bouge.Défaut 2 — le plancher split-half est une réalisation unique non reproductible
Le plancher est calculé sur une seule réalisation du split par bras, sans seed (« une seule réalisation par bras, fidèle à #13310 »). Les tirages observés (Bumble 0.000, Hinge 0.250 en nœuds ; 0.000 et 1.000 en attaques) montrent la variance du tirage : le seuil du gate attaques (0.500) est lui-même un tirage d'une variable qui peut valoir 0.000. Avec DiD(attaques) = +0.250, un tirage de plancher < 0.200 ferait basculer le verdict. À ces marges le verdict ne change pas, mais le seuil n'est pas rejouable : deux exécutions du même carnet sur les mêmes données peuvent produire deux verdicts différents. Le défaut est hérité du design de l'instrument (#13310) plus que du cas — à consigner sur les deux.
Défaut 3 (mineur) — la marge +0.05 du gate n'est pas dans la sortie imprimée
L'amendement n°2 fixe le gate à
DiD > plancher + 0.05(nœuds ET attaques). La cellule 11 imprimeDiD − plancher(−0.175 / −0.250) sans le +0.05. Verdict inchangé à ces marges (−0.225 / −0.300 resteraient négatifs), mais le critère imprimé n'est pas exactement le critère signé — une ligne à réaligner.Genèse corrigée (leçon des audits précédents)
Entré au dépôt le 17/09 (PR #16431, merge 20:42Z ; arc #16410 : pré-inscription → v1 retiré → v2), dernier toucher le 25/09 (renumérotation série
47b7c0e26). Daté ici par l'API du dépôt distant — le checkout local est un clone shallow dont le log s'arrête à une greffe du 24/09 (même artefact qui a faussé les dates d'entrée des audits ontologies, errata #18656/#18658/#18825).Vérification (rejouable)
Liens