Skip to content

ci(markdown-claims): signal noye 8 FP / 1 vrai — intercepter systematiquement les valeurs d'execution en prose (exclusion tarifaire, signature non-mutabilite, cout borne) #15430

Closed

Description

@myia-po-2023

Le fait

Le détecteur check_markdown_claims_output.py a un signal utile noyé dans ses propres faux positifs. Sur 07-SemanticKernel-MultiModal.ipynb (mesuré via #15365) : 9 findings dont 8 FP structurels — des tarifs ($0.04/image, $0.006/min, $15/1M chars, $2.00/1M tokens) qui viennent de pages de prix, jamais de la sortie d'une cellule — contre 1 vrai positif (117,600, valeur jamais produite par aucune cellule). Un organe dont le signal utile est minoritaire 8 contre 1 dans sa sortie sera survolé — et l'a été : l'advisory sticky de la PR #15343 se lisait comme du bruit.

Même après la vague de dé-quantification (#9434), le risque de régression reste : chaque nouvelle prose peut re-enchâsser un nombre dérivé d'exécution qui re-périra au passage kernel suivant.

La piste user (commentaire du 2026-09-09T14:25:41Z sur #15367)

Peut-être que les nombres « complexes » dans le markdown devraient avoir une signature de non mutabilité certifiée ? Attention malgré tout à ne pas utiliser des regexs trop coûteux si ça doit scanner en masse.

Pistes de design à investiguer (non exclusives)

  1. Classement par provenance plutôt que par forme : un nombre en prose est soit (a) un fait externe documenté (tarif, limite d'API : 4096 caractères, 6 voix, $0.04/image) — précédé d'un symbole monétaire ou suivi d'une unité de tarification (/image, /min, /1M) — soit (b) une valeur prétendue dérivée d'exécution (taille, durée, compteur) — c'est la classe (b) seule qui mérite finding. Commencer par la exclusion monétaire (coût nul : lookahead simple sur le token, pas de backtracking).
  2. Signature de non-mutabilité : pour les nombres de classe (a) qu'on veut autoriser en prose, une liste d'autorisation par notebook (fichier annexe ou marqueur inline borné) signée à l'ajout ; tout nombre classe (b) non signé = finding. Éviter les regex coûteuses : tokénisation numérique en une passe (\d[\d.,]* ancré mot) + lookup, jamais de motif imbriqué.
  3. Bornage du coût : l'organe ne scanne que les notebooks touchés par le diff (déjà le cas des gardes per-PR) ; la passe sur fichier complet reste linéaire, pas multi-passe.

Acceptance

Périmètre

Investigation + éventuel organe scripts/check_markdown_claims_output.py — séparé des PR notebook par design (cf #15365 : « ne pas le folder ici »).

See #9434 (EPIC porteur du mandat « quantitatif tenu par le CI, pas par la prose ») · See #15365 (constat d'origine).

Grain: MED/tooling — lane (à attribuer)

Activity

  1. myia-po-2023 commented on Sep 10, 2026

    @myia-po-2023
    CollaboratorAuthor

    [CLAIMED] #15430 — myia-po-2023:CoursIA — 2026-09-10T03:55Z

    Exécution des pistes 1+3 du body avec décision argumentée sur la piste 2 (signature de non-mutabilité) : exclusion monétaire par lookahead simple (classement par provenance, pas par forme), benchmark du coût sur le plus gros notebook, mesure FP/vrai avant/après sur l'échantillon GenAI/SemanticKernel + ML, contrôle positif 117,600 (#15365).

  2. added 3 commits that reference this issue on Sep 10, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    qualityNotebook quality issues

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions