- Noms des liens d'équipe : comparés sans casse, accents ni ponctuation (ld_engine::names), lettres latines seulement (pas de sosie cyrillique, grec ou pleine chasse), une ligne ; index unique (migration additive 0003) contre deux ouvertures simultanées sous le même nom. - Une personne déjà connectée ne prend une place que si le lien lui ajoute un groupe ; « Ce n'est pas moi » la déconnecte sur un navigateur partagé ; un lien collé dans le même onglet est relu. - Coller ou couper un mot de quantité n'est pas une coquille (« sur tout » → « surtout », « par tout » → « partout »). - Libellés sans caractère de contrôle ; la soumission revérifie le titre. Boucle : 68 tests Rust, svelte-check, 9 vitest, e2e 13/13. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
16 lines
586 B
Rust
16 lines
586 B
Rust
//! Pure engines of libreDecision — no IO, no clock, no randomness.
|
|
//!
|
|
//! Everything that decides an outcome lives here so it can be tested in
|
|
//! isolation and ported verbatim: the inertial threshold (parity with the
|
|
//! Python/TypeScript reference of the v2 maquette), the edit classifier that
|
|
//! separates a typo fix from a change of meaning, the rule-based editing
|
|
//! assistant, and the composition of a document under permanent vote.
|
|
|
|
pub mod assist;
|
|
pub mod compose;
|
|
pub mod edit;
|
|
pub mod names;
|
|
pub mod threshold;
|
|
|
|
pub use threshold::{FormulaParams, InertiaPreset, Tally};
|