Repository navigation
Closed
Labels
enhancementNew feature or requestNew feature or request
Description
Constat / besoin
Les essais sont gratuits, mais rien ne garde la trace de ceux déjà faits. Rosette compte 96 paires possibles pour 47 mots, et Routes des mots 450 paires pour 96 mots. Passé une vingtaine de briques, le joueur oublie ses échecs et refait les mêmes essais en boucle.
Piste 1 de la page de travail pistes-retention.html (Design#51), retenue par le propriétaire.
Vérification faite
- Code :
POST /fusion(crates/api/src/progression.rs) ne garde rien d’un échec ou d’un « presque ».web/src/composants/ReserveModale.tsxetReserve.tsxtrient la réserve sans tenir compte de la brique posée sur la table. - ADR : l’ADR 0027 et le modèle de données (§ 7) disent que les propositions de fusion ne sont jamais stockées. Il faut donc un ADR qui revienne sur ce point. Le propriétaire a accepté la proposition, y compris l’oubli à chaque parution.
- Doublons : aucune issue équivalente.
- Verdict :
confirmé.
Comportement attendu
- Une brique posée trie la réserve. Les briques déjà essayées avec elle, dans cet ordre de cases, se grisent et passent en fin de liste, sous l’intertitre « Déjà essayées avec géo- · 3 ».
- La ligne de sens dit pourquoi : « aucune recette », « presque : inversez » ou « au codex ».
- La liste suit la table. Retirer la brique ou en poser une autre recalcule la liste aussitôt ; les briques glissent vers leur nouvelle place en 240 ms, sans animation sous
prefers-reduced-motion. - Le gris : fond Sable, libellé en Encre secondaire, sans ombre. Une brique grisée reste jouable, puisque se tromper ne coûte rien. Ce n’est donc ni l’état désactivé (opacité de 40 %) ni l’état épuisé (hachures).
- Ce qui ne bouge pas : une paire jamais essayée garde l’ordre habituel de la réserve, sans compteur. Seuls passent en fin de liste ce que le joueur sait déjà.
| Téléphone | Téléphone, nocturne |
|---|---|
![]() |
![]() |
Données
- Table
essai:joueur_id,gauche,droite(briques dans l’ordre des cases) etfascicule_juge(le dernier fascicule paru au moment de l’essai). Ni issue, ni date, ni texte du catalogue. - Écriture : dans la transaction de
POST /fusion, pour un échec ou un « presque » seulement, et seulement si le joueur possède les deux briques. Plafond de 3 000 lignes par joueur. - Mots au codex : aucune ligne, le client les déduit de la règle de fusion (
prevoir). - Oubli : à chaque parution, toutes les lignes s’effacent en bloc, avec un seul message, parce que de vieilles paires peuvent devenir des mots. Une purge paire par paire désignerait les familles que prolonge le fascicule.
- Portée : la trace suit le compte sur tous ses appareils, part avec la partie quand elle est supprimée, et entre dans l’export.
Piste
Handoff.
- ADR (Design) : « Mémoire des essais », qui remplace en partie l’ADR 0027 et met à jour le modèle de données (§ 7).
- API :
- Ajouter une migration
essai. - Écrire l’essai dans
fusion(progression.rs) pour unechecou unpresque, avec un plafond, et l’effacer quand le fascicule le plus récent change. - Ajouter
Etat.essais([[gauche, droite]],#[serde(default)]). - Inclure les essais dans l’export et dans la réinitialisation.
- Régénérer
openapi.jsonet.sqlx/.
- Ajouter une migration
- PWA :
- Dans
web/src/services/jeu.ts, ajouterdejaEssayee(posee, brique, etat), qui utiliseprevoirpour les mots connus etEtat.essaispour les échecs. - Dans
ReserveModale.tsxetReserve.tsx, ajouter la partition et l’intertitre, avec l’animation FLIP. - Dans
styles.css, ajouter l’état.is-essayee. - Régénérer
api.d.ts.
- Dans
- Tests :
- Côté domaine et API : un essai est écrit pour un échec, rien pour une découverte, rien sans les deux briques, le plafond est respecté, la purge se fait à la parution.
- Côté PWA : la partition, et l’ordre stable des briques non essayées.
Prototype de référence : la démo « mémoire » de pistes-retention.html.
Critères d’acceptation
- Après un échec
a + b, poseragriseb, la place en fin de réserve et affiche « aucune recette ». Poserbseul ne grise pasa, car l’ordre compte. - Un « presque » affiche « presque : inversez », et un mot déjà au codex affiche « au codex ».
- La trace est tenue par le serveur et persiste après un rechargement et sur un autre appareil du compte.
- Une nouvelle parution efface toute la trace.
- Une brique grisée reste posable.
- L’ordre des briques non grisées est inchangé.
- Aucun texte du catalogue ni aucune date n’est stocké.
- À 390 px et 1440 px, en atelier et en nocturne :
check_identitysans erreur et animation vérifiée.
Metadata
Metadata
Assignees
Labels
enhancementNew feature or requestNew feature or request


Activity
Lunik commentedon Oct 24, 2026
Livré par #94, fusionnée dans
develop(6576e43), avec l’ADR 0081 (qui remplace en partie l’ADR 0027) et la maquette I-09 de EtymoLogique/Design#51.Generated by Claude Code