Ce que le Ticket mesure
Après Générer pack.md, le moteur construit le pack mesuré. Le Ticket affiche les totaux de cette préparation, pas le compactage fichier par fichier du terminal. Trois nombres suffisent à lire un lot : contexte source, pack complet, obligations conservées.
Un PASS à source 0 et pack 305 est un Ticket authentique : enveloppe seule, aucune matière utile. Un FAIL à 1 702 tokens n’est pas un bug d’affichage. Les lignes de log ont été traitées comme des obligations ; l’enveloppe plus les atomes dépassent le plafond interne.
Ce qu’il ignore
Des fichiers peuvent être lus, compactés, affichés dans le terminal, et n’entrer jamais dans le Ticket. Le filtre de bruit retire notamment les noms test_*, les dossiers tests/, le CSS, les scripts d’exploitation deploy_*, les secrets.env, les doublons et les extraits vides.
- Presque gratuit — bruit filtré : pack ≈ 305 tokens, PASS vide, ou Ticket non émis.
- Cher — logs, MUST/SHALL, routes HTTP, petit JSON dense, images en tuiles.
- Le −90 % facile — prose sans obligation. Sur le banc : markdown de remplissage, 4 820 → 368, PASS −92 %.
Le plafond n’est pas le curseur
Le budget affiché (ici 200 000 tokens) est un maximum utilisateur. Le plafond interne du Ticket est min(budget, max(32, 10 % de la source)). Si la source IR est nulle, le plafond redevient le budget utilisateur : une enveloppe de 305 passe. Si la source est un petit module (84 tokens), le plafond tombe à 32 ; un pack de 599 échoue, obligations conservées.
Barème des 20 lots
Banc local, 17 septembre 2026, tokenizer o200k_base, budget 200 000 tokens. Source = tokens IR retenus. Pack = pack.md complet, certificat compris.
| Lot | Verdict | Source | Pack | Obl. | Filtre |
|---|---|---|---|---|---|
| tests Python test_*.py | PASS | 0 | 305 | 0/0 | bruit |
| Python dans /tests/ | PASS | 0 | 305 | 0/0 | dossier tests |
| CSS | PASS | 0 | 305 | 0/0 | style |
| script deploy_* | PASS | 0 | 305 | 0/0 | script-ops |
| markdown remplissage | PASS | 4 820 | 368 | 0/0 | — |
| markdown MUST/SHALL | FAIL | 1 962 | 482 | 4/4 | — |
| appli FastAPI | FAIL | 84 | 599 | 6/6 | — |
| appli + test_* | FAIL | 84 | 599 | 6/6 | test ignoré |
| deux copies .py | FAIL | 84 | 599 | 6/6 | doublon |
| TypeScript router | FAIL | 300 | 398 | 1/1 | — |
| SQL schéma | FAIL | 360 | 392 | 1/1 | — |
| HTML page | FAIL | 221 | 365 | 0/0 | — |
| JSON petit | FAIL | 18 | 427 | 2/2 | — |
| fichier log | FAIL | 630 | 1 702 | 53/53 | — |
| PNG 64 px cartel | FAIL | 255 | 557 | 6/6 | — |
| PNG 1024 px cartel | FAIL | 765 | 542 | 6/6 | — |
| PNG 1024 px vision | FAIL | 765 | 542 | 6/6 | — |
| JSON dump volumineux | NON ÉMIS | 0 | 0 | — | vide |
| fichier vide | NON ÉMIS | 0 | 0 | — | vide |
| .env secret | NON ÉMIS | 0 | 0 | — | exclu |
Limites de cette page
Ce barème n’est pas un tarif commercial ni une garantie de −90 % sur un dépôt client. Il documente le comportement du moteur sur vingt corpus synthétiques. Un PNG « vision » n’a pas modifié l’IR par rapport au cartel-texte sur ce banc. Les images compactées restent un levier fichier ; le Ticket suit l’IR.
Conserver le Ticket (coffre) archive la trace anonymisée. Cela ne change ni le verdict ni les totaux.