# Journal des décisions de calibration — registre 4C Exigence E-05. Toute modification du registre est journalisée ici : branche ou champ modifié, ancienne valeur, nouvelle valeur, raison, effet mesuré. Ce fichier est versionné avec le dépôt ; il n'est pas une table applicative. Le scellement (`npm run seal:registry`) refuse de sceller si la dernière version inscrite ici ne correspond pas au `registry_version` du registre. --- ## 1.3.0 — 2026-08-07 — lot G-0, mise à niveau du registre livré Registre d'origine : `content_hash` `a7d47b10116a7b9d9331c8c56121c1a0ca18eb9b13415cfe3c124e94995b2560`. Référence de mesure : `pactem-sources/ETAT_DU_REGISTRE.md`. Référence de méthode : charte méthodologique v1.3. ### Modifications appliquées | Champ | Ancienne valeur | Nouvelle valeur | Raison | |---|---|---|---| | `grids[4C].criteria[clause_penale].silence_regime` | `a_savoir` | `conforme` | Charte v1.3 §6 : « Aucune clause pénale — l'absence est favorable au locataire ». Le `comment` du critère déclarait déjà « Régime de silence vert » : la valeur livrée contredisait sa propre justification. Signalé « ← à corriger » par ETAT_DU_REGISTRE. | | `grids[4C].criteria[revision_loyer].silence_regime` | `a_savoir` | `conforme` | Charte v1.3 §6 : « aucune clause de révision — l'absence est favorable au locataire ». Règle 5, troisième cas (charte §8.4). Signalé « ← à corriger » par ETAT_DU_REGISTRE. | | `grids[4C].crossings` | `[]` | *(champ supprimé)* | Règle 3 « promotion croisée » retirée en v1.3 (charte §8.9, annexe A entrée 7). Aucun croisement n'avait jamais été déclaré. | | `notes` | « 0 document avec un niveau à_vérifier, orange résiduel **10,7 %** sur un seul critère, maximum 1 orange par document » | « 0 document portant un niveau « À vérifier » ; résiduel « À noter » de **3,6 %** (1 document sur 28) […] ; jeu de contrôle : 10 cibles sur 10 » | E-05b : `notes` ne doit annoncer aucun chiffre que la CI ne mesure pas. La mesure est 1/28 = 3,6 % (charte v1.3 §6). Vocabulaire « orange » / « à_vérifier » remplacé par le lexique verrouillé v1.3 (charte §2.1). | | `lexicon.duration_words` | *(absent)* | table fermée, 57 entrées, valeurs 1 à 36 | E-11 : les baux réels écrivent les durées en toutes lettres (« deux mois », « quinze jours »). Table couvrant 1 à 36 plus les variantes « un »/« une »/« premier »/« première », et les graphies avec et sans trait d'union. Fait linguistique, sans effet de calibration. | ### Effet sur la calibration Aucun. Les deux changements de `silence_regime` ne portent que sur le traitement du **silence** de critères où le corpus mesuré ne présente aucun silence classant ; `crossings` était vide et n'a jamais produit d'effet ; `notes` est documentaire ; `duration_words` n'est consommé par aucun moteur à ce stade (l'étage 3 est écrit en G-1). Le rejeu du corpus reste dû en fin de lot G-1, où il constitue le critère de recette. ### Seconde passe — arbitrages de l'addendum v1.3.1 Les cinq points remontés en fin de première passe ont été tranchés par l'addendum v1.3.1. Trois étaient des défauts de spécification, pas du registre. | Champ | Ancienne valeur | Nouvelle valeur | Raison | |---|---|---|---| | `lexicon.derogation_markers` | 3 formulations | **14** formulations, liste fermée | Addendum v1.3.1 §4. L'inventaire des formulations françaises introduisant une dérogation contractuelle est un fait de langue énumérable. `par derogation expresse` reste capté par `par derogation` ; `le preneur reconnait expressement avoir ete informe` est retiré — c'est une reconnaissance d'information, pas une dérogation. | | `lexicon.renvoi_markers` | *(absent)* | **18** entrées, liste fermée | Addendum v1.3.1 §5. Le « etc. » de E-12 était un défaut de spécification. Toutes les entrées sont multi-mots ; `annexe` seul est exclu — il figure légitimement dans une branche d'`etat_des_lieux` et produirait un renvoi fantôme. | | `lexicon.empty_field_markers` | — | *(non créé)* | Addendum v1.3.1 §5 : le champ existe déjà au niveau de chaque critère, ce qui est le bon niveau puisqu'un champ vide se reconnaît différemment selon la rubrique. Aucune liste globale n'est à créer. | | `4C.clause_solidarite.O1` | — | *(non ajoutée)* | Addendum v1.3.1 §3 : l'audit avait tort. Charte §6, colonne « À noter » de la solidarité = tiret ; charte §8.2 : le tiret signifie qu'aucune condition ne déclenche ce niveau. Les 3 branches couvrent les 3 colonnes non vides. | | `pactem_grid_registry.schema.json` | schéma de l'ère v1.2 | mis à jour et branché | Addendum v1.3.1 §6. `silence_regime` / `empty_field_regime` portés au lexique v1.3 ; `lexicon` et `context_enum` déclarés ; `anchor` + `window` déclarés **et requis** sur `duration`, `amount_max`, `amount_min`. Le schéma cesse d'être un document mort : `check-registry` valide désormais le registre contre lui. | ### Mesures obligatoires en G-1 - **`derogation_markers`** — la règle 4 abaisse d'un cran ; un marqueur déclenché à tort adoucit un signal légitime, c'est le sens dangereux de l'erreur. Rejouer les 28 baux et vérifier qu'aucun document ne perd un « À vérifier » ou un « À noter ». Tout marqueur responsable d'un adoucissement non justifié est retiré et le retrait journalisé ici. - **`renvoi_markers`** — risque faible (un renvoi détecté à tort porte à « À savoir » via K0, ne crée jamais d'alerte). Mesure demandée, non bloquante. - **Fenêtres d'ancrage** (E-A13, addendum v1.3.2) — recalibrer **en premier**, contre des relevés de longueur réaliste et non contre les valeurs abrégées du corpus. Les fenêtres actuelles valent 20 à 40 caractères ; une phrase de bail réelle insère couramment 30 à 60 caractères entre l'ancre et la valeur (« est fixé à une somme égale à » en fait 28 à lui seul). Pour chacun des dix critères, jeu de quatre reformulations sémantiquement identiques — abrégée, moyenne, phrase complète simple, phrase complète verbeuse — devant produire **le même niveau et la même branche**. Élargir sans jamais franchir une frontière de segment (`;` ou `.`). Journaliser ici chaque fenêtre modifiée : ancienne valeur, nouvelle, reformulation qui l'a motivée. - **`anchor_fallback`** — retrait (E-06c) **après** l'élargissement des fenêtres, jamais avant : retirer le repli en premier ferait chuter en `no_branch` des clauses que le repli rattrapait par chance. Table des différences avant/après sur les 28 baux, aucun basculement vers « À vérifier », jeu de contrôle maintenu à 10/10. Si un document régresse, c'est l'ancre du critère qui est enrichie — jamais le repli réintroduit. Ordre normatif en G-1 : **fenêtres d'abord, repli ensuite** (v1.3.2 §3). --- ## 1.3.0 — lot G-1, calibration des fenêtres et des marqueurs Registre non rescellé à ce stade : la recette corpus n'est pas atteinte (voir fin d'entrée). Chaque étape ci-dessous a été mesurée séparément, dans l'ordre imposé par l'addendum v1.3.3 §5. **Référence de départ** — 12/17 scénarios cohérents et justes ; corpus : 1 document « À vérifier », 3 « À noter » (10,7 %) ; jeu de contrôle 9/10. | # | Champ | Avant | Après | Motivé par | |---|---|---|---|---| | 1 | schéma : `contains_any`/`contains_all` | `values` seul | `values_from_lexicon` accepté (E-A15) | Dupliquer une liste dans une branche la fait cesser d'être unique sous sceau | | 2 | `4C.depot_garantie` V2, V3, C1, R1, R2, R3 — `window` | `20` | `70` | Écarts ancre→valeur mesurés à 30, 59 et 30 car. sur les formulations longues de `depot_garantie/usuel`, `/anormal`, `/usuel_meuble` | | 3 | `4C.clause_solidarite.R1` | `contains_all(["remplacant","sans limite"])` | `or[ and[ contains_any(remplacement_markers), not(duration ≤ 6 mois ancrée) ], duration > 6 mois ]` | `clause_solidarite/anormal` convergeait sur `a_savoir` — faux négatif : « sans limitation de durée » ne satisfait pas « sans limite » | | 4 | `lexicon.remplacement_markers` | *(absent)* | 4 entrées, liste fermée | Support de la condition structurelle ci-dessus | | 5 | `4C.clause_resolutoire.R1` | `contains_any` de 3 formules figées | `contains_any(resiliation_sans_formalite_markers)` | `clause_resolutoire/anormal` : « sans qu'il soit besoin d'aucune mise en demeure ni commandement préalable » ne satisfait aucune des 3 formules — négation distribuée sur deux compléments coordonnés | | 6 | `lexicon.resiliation_sans_formalite_markers` | *(absent)* | 8 entrées décomposées | Idem — marqueurs décomposés, non une quatrième formule figée | | 7 | `normalizeForMatch` | apostrophe conservée | apostrophe → espace | `d un commun accord` ne rencontrait jamais `d'un commun accord` : marqueur silencieusement mort | | 8 | `lexicon.derogation_markers` | 14 entrées | 12 — retrait de `d un commun accord` et `par accord des parties` | Formulaire contractuel, pas une contrepartie au sens de la charte §8.6 | | 9 | `lexicon.contrepartie_markers` | *(absent)* | 10 entrées, liste fermée | E-A16 — la règle 4 exige désormais dérogation **et** contrepartie cumulativement | | 10 | E-16c — contexte manquant | dégradation en bloc du critère | dégradation partielle : branches non dépendantes évaluées, `context_missing_partial` | `CTRL-4C-04` cible une branche **non datée** et devenait indétectable pour une raison sans rapport | | 11 | `empty_field_regime` | « À noter » systématique | « À savoir » si le relevé porte une valeur chiffrée ou un plafond légal (E-A17) | `4C-MT-08` : « article dédié laissé à compléter ; plafond légal rappelé à 1 mois hors charges » | | 12 | `anchor_fallback` | `whole_releve` sur 19 prédicats | **champ supprimé** | v1.3.2 §2 — appliqué après l'élargissement, jamais avant | | 13 | `4C.depot_garantie` — `anchor` | `[depot, garantie, caution]` | `+ loyer` | Le retrait du repli faisait chuter `« 3 mois de loyer »` et `CTRL-4C-05` en `no_branch` : aucune ancre présente. `loyer` discrimine — présent dans `CTRL-4C-05`, absent de `4C-MT-05` | ### Effet mesuré | | Départ | Arrivée | Cible | |---|---|---|---| | Scénarios cohérents et justes | 12/17 | **17/17** | 17/17 | | Documents « À vérifier » | 1 | **0** | 0 | | Documents « À noter » | 3 (10,7 %) | **2 (7,1 %)** | 1 (3,6 %) | | Jeu de contrôle | 9/10 | **10/10** | 10/10 | `4C-MT-05` — « 1 mois en location nue, 2 mois en location meublée » — ne sort plus en « À vérifier » : c'était le faux positif que `anchor_fallback` produisait en relisant tout le relevé faute d'ancre, et en retenant « 2 mois » comme montant du dépôt. Aucun document n'a gagné de niveau à aucune étape. Le resserrement de la règle 4 (étape 9) ne pouvait produire que des signalements supplémentaires ; il n'en a produit aucun sur le corpus. ### Étape 14 — scission du corpus, et correction du dénominateur (E-A18) Les deux documents qui bloquaient la recette — `4C-MT-04` et `4C-MT-14` — **ne sont pas des contrats**. Le premier est une page d'information de Service-public.gouv.fr (DILA), le second une page éditoriale des Notaires du Grand Paris. Leurs relevés le disent mot pour mot : « montant du dépôt de garantie **s'il est prévu** », « **le cas échéant** ». Ce sont des éléments d'une énumération pédagogique, pas des clauses. Vérification du dénominateur, document par document : sur les 28 examinés, **neuf** portent le type `autre` — DILA, ANIL, Notaires du Grand Paris, et six éditeurs privés de modèles. **Dix-neuf sont des baux ou des modèles de bail.** | Champ | Avant | Après | Motif | |---|---|---|---| | Base de mesure | « 28 baux » | **19 baux** + 9 documents de robustesse, déclarés séparément | Neuf documents n'étaient pas des contrats | | `notes` — taux résiduel | « 3,6 % (1 document sur 28) » | « 0 document « À noter » sur 19 » | Le taux était faux **non dans son calcul mais dans ce qu'il comptait** | | `test/fixtures/corpus_ensembles_4C.json` | *(absent)* | déclaration explicite des deux ensembles | E-A18 : l'appartenance se déclare, elle ne se déduit pas | | `check-registry` — contrôle E-05b | comparait à 1/28 | vérifie que `notes` déclare les deux ensembles et n'annonce aucun taux | E-05b existait pour empêcher exactement ce défaut | **Ce qui n'a pas été fait, et pourquoi.** Aucune règle n'a été ajoutée pour départager ces deux documents. La piste envisagée — traiter « sur cette page » comme un indice — aurait calibré sur une annotation de dépouillement : aucun bail réel n'écrit cela. Le marqueur serait resté dans le registre scellé pour toujours, ajusté à du bruit. Les deux documents sortent de la base de calibration parce qu'ils n'en relevaient pas, **pas** parce qu'ils donnaient un résultat gênant. Aucun document de la base de calibration n'a été retiré. ### Recette de fin de lot G-1 | Mesure | Résultat | Cible | |---|---|---| | Scénarios cohérents et justes | **17 / 17** | 17 / 17 | | Base de calibration — « À vérifier » | **0 / 19** | 0 | | Base de calibration — « À noter » | **0 / 19** | au plus 1 | | Jeu de contrôle — cibles détectées | **10 / 10** | 10 / 10 | | Robustesse — « À vérifier » | **0 / 9** | 0 | | Robustesse — exceptions | **0 / 9** | 0 | Registre scellé à l'issue de cette étape. ### À vérifier avant toute calibration de 4K Le corpus 4K n'a pas fait l'objet de cette vérification. Ses vingt-six documents sont annoncés comme des contrats d'assurance professionnelle ; rien ne garantit qu'aucune page éditoriale ne s'y soit glissée. Appliquer la même inspection et déclarer les deux ensembles **avant** de régler le moindre seuil. Les deux listes lexicales sont **issues de l'addendum v1.3.1 et restent à valider sur le corpus**. ## 1.3.1 — 2026-09-11 — lot CH-4, énoncés de silence descriptifs Registre de départ : 1.3.0, `content_hash` `7a6099fffad5cc0b8dc08ef3c3fe7d0f283173dab5c9837a7524780237be8254` (le 1.3.0 réellement servi, archivé sous `archive/registry_4C_1.3.0_7a6099ff.json` — jamais la livraison `a7d47b10…`, voir `archive/LISEZ_MOI.md`). Référence de méthode : `SOCLE/Pactem_Arbitrage_2026-09-07.md` §1, règle 5 (« l'énoncé de silence est descriptif : ce qui n'a pas été trouvé, puis ce que la loi ou la pratique prévoit — jamais un impératif ») et §4 (« concorde avec » pour « conforme à »). ### Modifications appliquées | Champ | Ancienne valeur | Nouvelle valeur | |---|---|---| | `depot_garantie.silence_statement` | Montant du dépôt de garantie non identifié dans ce document — vérifier les conditions générales complètes. | Aucun montant de dépôt de garantie n'a été identifié dans ce document. Le dépôt n'est pas obligatoire ; lorsqu'il est exigé, l'article 22 de la loi du 6 juillet 1989 le plafonne à un mois de loyer hors charges en location nue, l'article 25-6 à deux mois en location meublée, et l'article 25-13 l'exclut en bail mobilité. | | `delai_restitution_depot.silence_statement` | Délai de restitution du dépôt non identifié dans ce document — l'article 22 de la loi du 6 juillet 1989 s'applique de plein droit. | Aucun délai de restitution du dépôt de garantie n'a été identifié dans ce document. L'article 22 de la loi du 6 juillet 1989 s'applique de plein droit : restitution dans un délai d'un mois lorsque l'état des lieux de sortie concorde avec celui d'entrée, de deux mois dans le cas contraire. | | `4C.delai_restitution_depot.V1.statement` | Le contrat reprend les délais de restitution d'un mois lorsque l'état des lieux de sortie est conforme à celui d'entrée, et de deux mois dans le cas contraire. | Le contrat reprend les délais de restitution d'un mois lorsque l'état des lieux de sortie concorde avec celui d'entrée, et de deux mois dans le cas contraire. | | `etat_des_lieux.silence_statement` | Modalités de l'état des lieux non identifiées dans ce document — l'article 3-2 de la loi du 6 juillet 1989 impose un état des lieux contradictoire. | Aucune modalité d'état des lieux n'a été identifiée dans ce document. L'article 3-2 de la loi du 6 juillet 1989 prévoit un état des lieux contradictoire à la remise et à la restitution des clés ; il s'établit à ce moment-là, en dehors du contrat. | | `clause_resolutoire.silence_statement` | Clause résolutoire non identifiée dans ce document — la résiliation suppose alors une décision de justice. | Aucune clause résolutoire n'a été identifiée dans ce document. Cette clause est facultative ; à défaut, la résiliation du bail pour manquement du locataire passe par une décision de justice. | | `preavis_locataire.silence_statement` | Durée de préavis non identifiée dans ce document — les durées légales de l'article 15 s'appliquent de plein droit. | Aucune durée de préavis du locataire n'a été identifiée dans ce document. Les durées de l'article 15 de la loi du 6 juillet 1989 s'appliquent de plein droit, que le contrat les reprenne ou non. | | `resiliation_anticipee_bailleur.silence_statement` | Modalités du congé donné par le bailleur non identifiées dans ce document — les durées de l'article 15 s'appliquent de plein droit. | Aucune modalité de congé donné par le bailleur n'a été identifiée dans ce document. Les cas et les délais de l'article 15 de la loi du 6 juillet 1989 s'appliquent de plein droit et ne peuvent pas être aggravés par le contrat. | | `clause_solidarite.silence_statement` | Aucune clause de solidarité n'a été identifiée dans ce document. | Aucune clause de solidarité entre locataires n'a été identifiée dans ce document. Sans clause, aucune solidarité n'est stipulée entre eux ; le contrat peut aussi ne compter qu'un seul locataire. | | `charges_recuperables.silence_statement` | Modalités des charges non identifiées dans ce document — la liste des charges récupérables est fixée par décret. | Aucune modalité d'appel des charges n'a été identifiée dans ce document. La liste des charges récupérables est fixée par le décret du 26 août 1987 et s'applique indépendamment du contrat. | | `clause_penale.silence_statement` | Aucune pénalité de retard n'a été identifiée dans ce document. | Aucune pénalité ni amende à la charge du locataire n'a été identifiée dans ce document. L'article 4 g) de la loi du 6 juillet 1989 répute non écrite toute clause de ce type. | | `revision_loyer.silence_statement` | Modalités de révision du loyer non identifiées dans ce document — à défaut de clause, le loyer n'est pas révisable en cours de bail. | Aucune clause de révision du loyer n'a été identifiée dans ce document. À défaut de clause, le loyer n'est pas révisable en cours de bail (article 17-1 de la loi du 6 juillet 1989). | | `registry_version` | 1.3.0 | 1.3.1 | | `published_at` | 2026-07-30 | 2026-09-11 | | `content_hash` | `7a6099ff…` | `e7d227ad37d3863847731646cb22c477a4bdabb36749269b8021861bf2b3b339` | Onze champs textuels, aucun prédicat, aucun niveau, aucun `silence_regime`. Les deux `silence_regime` que l'ancien `ETAT_DU_REGISTRE.md` marquait « à corriger » (`clause_penale`, `revision_loyer`) étaient déjà `conforme` dans le 1.3.0 servi (lot G-0, ci-dessus) : rien à faire, et le bloc CH-4 les visait sur la foi d'un état qui mesurait la livraison. ### Effet sur la calibration Aucun par construction : seuls des textes affichés changent. `check_registry.py` : T-07 (vocabulaire), T-06, PREUVE au vert ; la validation contre `pactem_grid_registry.schema.json` échoue sur 42 points **antérieurs à ce lot** — le schéma de registre de `pactem-sources` est encore celui de l'ère v1.2 (`silence_regime` attendu en `green/cyan/red`, ni `lexicon`, ni `anchor`), alors que le moteur l'a mis à jour à l'addendum v1.3.1 §6 ; le dépôt `pactem-backend` n'étant pas sur ce poste, la copie n'a pas pu être faite ici. À rapatrier comme le registre l'a été. Publication : ce fichier est la source de vérité ; sa copie dans le moteur et sa mise en ligne relèvent d'une décision d'Etienne (addendum v1.4.8 §3), pas de ce lot.