Skip to content

examples/ferriskey-presentation.json ne passe pas rustmotion validate (préexistant à main) #157

Description

@LeadcodeDev

Un exemple livré échoue la validation que CLAUDE.md déclare obligatoire.

$ rustmotion validate -f examples/ferriskey-presentation.json
Geometry: 1 violation(s)
ERROR: gradient_text (wrap=false but text too wide)
  view: 0, scene: 4
  path: views[0].scenes[4].children[1].children[1].children[0].children[0]
  bbox: [290, 509] -> [690, 631]   (viewport: 1920x1080)
  axis: x
  hint: gradient_text natural width is 404px but only 400px available

Ce n'est pas une régression du chantier d'audit

Établi, pas supposé :

  • L'échec se reproduit à l'identique — même chiffre de 404 px — à c229ec0, avant le round 3.
  • git log main..c229ec0 sur le chemin de mesure (intrinsic.rs, renderer/text.rs, gradient_text.rs, renderer/fonts.rs) est vide : le code de mesure est identique à main.
  • Même chose pour le validateur (commands/geometry.rs) et pour le fichier d'exemple lui-même.

Le dépassement existe donc sur main et précède tout le chantier.

Pourquoi ça compte quand même

404 px pour 400 px disponibles, soit 1 % de dépassement. Le contenu est presque certainement correct à l'œil. Mais :

  1. CLAUDE.md pose comme règle obligatoire que tout scénario passe validate avant d'être présenté. Un exemple du dépôt qui échoue contredit la règle que le dépôt enseigne.
  2. Un exemple livré est une référence copiée par les générateurs. Celui-ci leur montre un white-space: nowrap dans une boîte trop étroite de 4 px.

Pistes

Par ordre de préférence :

  1. Corriger l'exemple — élargir la boîte de quelques pixels, ou baisser légèrement la font-size. C'est un gradient_text avec white-space: nowrap dans une boîte de 400 px ; le rendre conforme est trivial et rend l'exemple exemplaire.
  2. Vérifier au passage que la largeur naturelle mesurée par GradientTextIntrinsic correspond bien aux pixels réellement peints. Un écart de 1 % sur une seule ligne peut aussi être un défaut de mesure — auquel cas le vrai bug n'est pas dans l'exemple. À trancher avant de corriger le JSON, sinon on masque le symptôme.

Vérification

rustmotion validate -f examples/*.json doit passer sur les 8 exemples. Aujourd'hui : 7 sur 8.

Metadata

Metadata

Assignees

Labels

bugSomething isn't working

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions