Demande d'Yvv du 02/11 : « je vois ce que j'ai fait sans attendre », contrôle a posteriori (bien unique, bien le dernier qui vaut), et le vote simulé partout dans Monnaie libre tant que LD_VOTE_ACCOUNT n'est pas posé. Révise une phrase de 0010 : un « pour » prouvé pendant une objection est écarté. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
10 KiB
0010 — Objections « redit » / « contredit », coquilles validées, messagerie
Remplace 0004 (contradictions signalées) et complète 0003 (corriger n'est pas voter), dont la règle de la coquille ne change pas. Décisions d'Yvv du 2026-10-30 (revue) ; la messagerie dans l'application et la coquille d'un texte du seed validée par un administrateur sont les choix par défaut d'orch. Lot F, 2026-10-31. Révisée le 2026-11-01 (décision d'Yvv, lot G) : sur une version retenue, on peut encore retirer son vote ou voter « contre », jamais ajouter un « pour ». Révisée par 0012 (2026-11-02, lot V) : un « pour » dont la preuve arrive sur la chaîne pendant qu'une objection retient la version est écarté ; il ne compte plus « tel qu'il est signé ».
Contexte. Le signalement de contradiction (0004) bloquait l'entrée en vigueur sans dire à qui revenait le geste suivant, et une coquille corrigée par n'importe qui changeait le texte d'un autre sans lui demander. Yvv, 2026-10-30 :
- « Faudrait un "redit" en option avec "contredit" → faut rendre plus explicite que l'objection doit être levée par l'auteur de la dernière arrivée pour être une proposition votable. Pour ce qui constitue une répétition → modifier l'article cible ; pour une contradiction → reformuler. → ping messagerie TrustinWallet → Lever l'objection ou Réitérer l'objection ; si pas de réponse sous 3j, alors "levée". »
- « Corriger coquille → ping auteur pour valid → idem 3j ça passe auto, mais auteur a toujours la main tant que c'est pas le texte en vote. Sinon seule une coquille validée corrige le texte en vote. » (« le texte en vote » : le texte en vigueur.)
Décision
Les objections — crates/ld-engine/src/objection.rs
- Une objection dit qu'une version redit une autre (elle la répète) ou la contredit,
motif à l'appui (10 à 600 signes). Elle porte sur deux versions de texte de deux articles
différents, ouvertes ou en vigueur — jamais deux textes en vigueur (
both_in_force). - Elle retient la dernière arrivée des deux (date de soumission, à défaut de création, puis l'ordre d'écriture) ; jamais un texte en vigueur : si la dernière arrivée est en vigueur, c'est l'autre qui est retenue. La version retenue est fixée quand l'objection est faite.
- Tant que l'objection tient, la version retenue ne prend plus de « pour » et n'entre pas
en vigueur, quelles que soient ses voix. Yvv, 2026-11-01, à la question « pendant qu'une
objection retient une version, que permet-on ? » : « Retirer ou "contre" ». Chacun peut
retirer son vote ou passer à « contre » ; personne ne peut ajouter un « pour » (vote
direct, vote groupé, bulletin de la chaîne :
409 objection, et une ligne refusée refuse tout le vote). La version ne peut que perdre des voix tant qu'elle est retenue ; à la levée, elle n'entre qu'avec les voix encore là. Les votes déjà faits restent ; un bulletin scellé avant l'objection et confirmé après compte tel qu'il est signé pour « contre » et le retrait ; son « pour » est écarté (0012). Règle :ld_engine::objection::may_cast, appliquée parDocState::admits. - Une personne n'a qu'une objection debout sur une même paire (
objection_exists). - L'auteur de la version retenue répond : pour une redite, il modifie l'article visé (une proposition liée à l'objection, sur l'article de l'autre version, partie de son texte) ; pour une contradiction, il reformule (une révision de fond de sa version, ou une proposition liée sur son propre article). Une révision de fond de l'une ou l'autre des deux versions vaut réponse ; une coquille, non. Une version du seed n'a pas d'auteur : tout membre du groupe peut y répondre par une proposition liée.
- Une réponse donne la main à la personne qui objecte : un message lui demande de lever ou de réitérer dans les 3 jours ; sans geste de sa part, l'objection est levée à l'échéance. Un seul tour à la fois : une autre réponse pendant son tour ne change ni le message ni l'échéance. Réitérer rend la main à l'auteur (tour suivant, sans échéance pour lui).
- Lever : la personne qui a fait l'objection, à tout moment, ou un administrateur de trustinWallet. Réitérer : elle seule. Retirer une des deux versions met fin à l'objection. Une levée relance l'adoption : la version libérée entre en vigueur si les voix encore là suffisent.
- Règles d'accès :
trustin_access::lifts_objection,reiterates_objection.
| Qui | Quoi | Effet | Échéance |
|---|---|---|---|
| tout membre du groupe | faire une objection « redit » ou « contredit » | la dernière arrivée (jamais un texte en vigueur) ne prend plus de « pour » — « contre » et retrait seulement — et n'entre pas en vigueur ; message à son auteur | — |
| l'auteur de la version retenue (tout membre pour une version du seed) | modifier l'article visé (redit) ou reformuler (contredit) | la main passe à la personne qui objecte ; message « lever ou réitérer » | 3 jours pour elle |
| la personne qui objecte | lever | la version reprend des « pour », et entre en vigueur si les voix encore là suffisent | — |
| la personne qui objecte | réitérer | la main revient à l'auteur ; message « réponds à nouveau » | aucune pour l'auteur |
| personne | (3 jours sans geste après une réponse) | levée « 3 jours sans suite » | — |
| un administrateur | lever | levée « par un administrateur » | — |
| l'auteur | retirer sa version | l'objection prend fin | — |
Les coquilles validées — crates/ld-engine/src/correction.rs
La règle de la coquille (0003, edit.rs) ne change pas ; ce qui change, c'est qui la laisse
entrer.
- Sur son propre texte (l'auteur de la version ; un administrateur pour un texte du seed), la correction s'applique tout de suite, comme avant.
- Sur celui d'un autre, elle attend : un message à l'auteur de la version (aux administrateurs qui ouvrent le groupe, pour un texte du seed) avec valider / refuser ; sans réponse sous 3 jours, elle s'applique d'elle-même.
- Tant que le texte n'est pas en vigueur, l'auteur garde la main : il peut revenir sur une correction appliquée (révision « correction retirée ») ou appliquer finalement une correction refusée, tant que le texte est celui sur lequel elle a été écrite.
- En vigueur, seule une correction validée change le texte : elle attend la validation (ou l'échéance, qui vaut validation), et un refus est définitif.
- Deux corrections en attente sur un même texte : chacune est jugée contre le texte voté ; à l'application, la correction doit tomber sur le texte qu'elle a lu — sinon (une autre correction, une révision de fond ou un retrait est passé entre-temps) elle est périmée et l'interface demande de recharger.
- Les traductions restent éditoriales : elles ne passent pas par une validation.
- L'historique dit qui a écrit la correction et qui l'a validée (ou qu'elle est passée à l'échéance) ; la correction en attente se lit, avec son diff, dans « Détails ».
- Règle d'accès :
trustin_access::answers_typo.
| Qui | Quoi | Effet | Échéance |
|---|---|---|---|
| l'auteur de la version (un administrateur pour un texte du seed) | corriger une coquille | appliquée tout de suite, les votes restent | — |
| tout autre membre | corriger une coquille | en attente ; message à l'auteur (aux administrateurs pour un texte du seed) | 3 jours, puis appliquée |
| l'auteur (ou un administrateur pour le seed) | valider / refuser | appliquée / laissée de côté | — |
| l'auteur, texte pas encore en vigueur | revenir au texte d'avant, ou appliquer finalement | la main reste à l'auteur | — |
| texte en vigueur | — | seule une correction validée (ou passée à l'échéance) le change ; un refus est définitif | — |
La messagerie — crates/ld-server/src/messages.rs
Une boîte « Messages » dans l'application, au menu, avec le nombre de non-lus (une pastille
sur le bouton du menu en mobile) ; pas de courriel. Un message porte un objet (une objection, une
coquille), son texte — dit par l'interface, dans la langue de la personne —, les gestes que
l'objet lui demande maintenant (répondre, lever ou réitérer, valider ou refuser) et son
échéance ; un message traité n'offre plus de geste et dit ce qu'il est devenu. Chacun ne lit
que les siens (trustin_access::reads_message) ; agir sur l'objet lit ses messages. Un message
ne se montre que tant que la personne ouvre le groupe dont il parle.
Les échéances — crates/ld-server/src/deadlines.rs
Trois jours (ANSWER_DAYS). Le balayage d'adoption (toutes les 5 minutes) passe les
échéances, et une fois au démarrage : une échéance passée pendant un arrêt est prise dès la
reprise. L'horloge du serveur est injectable (AppState::clock) : les tests l'avancent, sans
attendre ; la route /api/dev/clock n'existe qu'avec la connexion de développement.
La migration 0008
Additive. Les signalements gardent leur table (signals) et y gagnent le genre, la version
retenue, le tour, l'échéance, la réponse et la cause de la levée ; chaque signalement existant
devient un « contredit » sans perte : levé, il le reste (par son auteur, un administrateur
ou une révision, selon lifted_by) ; debout, il retient la dernière arrivée selon la règle
ci-dessus (s'il visait deux textes aujourd'hui tous deux en vigueur, il ne retient rien et se
lève à la main). Aucun message n'est créé pour le passé. S'y ajoutent les tables typos (les
corrections des autres) et messages, et sur les révisions la correction d'origine et qui l'a
validée.
Coût. Une version retenue attend son auteur aussi longtemps qu'il ne répond pas : c'est la dernière arrivée, c'est à elle de s'expliquer. Pendant ce temps, ceux qui la soutiennent ne peuvent pas la renforcer : un nouveau « pour » attend la levée, alors qu'un « contre » ou un retrait compte tout de suite. Une personne qui réitère sans fin garde une version hors du vote : un administrateur peut lever. Une coquille d'un autre met jusqu'à trois jours à paraître, et sur un texte du seed elle attend un administrateur.