Mission 3 — réflexion bornée + affectif v2 + consolidation + bench mesuré
LIVRÉ. RÉFLEXION bornée (reflect.py) : déclencheurs DÉTERMINISTES (salutations/arithmétique/routine exclus ; complexité, actualité sans source, impact sans source, tool_errors, citations inventées) ; contrôles structurés côté code (citations/complétude/intention) ; décisions ACCEPT/REVISE/VERIFY_SOURCE/ANSWER_WITH_UNCERTAINTY ; 1 révision max, retour obligatoire à ANSWER_VALIDATING, réévaluation par CODE (pas de 2e avis du modèle), record compact persisté (jamais de CoT). Arrêts : pas de récursion, pas de nouvel appel outil en révision, aucune permission. BENCH REPRODUCTIBLE (tests/bench_reflection.py, mock déterministe, 7 scénarios mesurés) : A=7 appels ; B conditionnelle=9 appels (+2) avec 5/7 réflexions dont 2 INUTILES (calibration à durcir — résultat négatif publié) ; la branche C (toujours) du banc est marquée non fiable (fixture de mesure limitée) — pas travestie. AFFECTIF v2 : valence/activation/friction, décroissance /heure, delta borné/tour (0,3), expiration 6 h, message court sans effet, signaux contradictoires→neutre, contrôles utilisateur (inspecter/réviser/désactiver/réinitialiser), STYLE seulement (jamais de fait, incertitude préservée, aucun profil durable). CONSOLIDATION : doublons superseded, expiration valid_until, contradictions MARQUÉES jamais supprimées, isolation entre conversations, passe manuelle (flag off par défaut). DRAPEAUX serveur : REFLECTIVE_CHAT_{ENABLED,REFLECTION,AFFECT,MEMORY_CONSOLIDATION}, enforcement testé (off = aucune mise à jour/aucune révision). UI : panneau mémoire avec correction (double-clic)+suppression+disable, contrôles affectifs, état inspectable. TESTÉ : 20 tests mission 3 + suite 417/417, / et /chantiers 200 post-déploiement. PARTIAL/DÉFÉRÉ honnête : embeddings lexicaux only ; calibration des déclencheurs à affiner (2 révisions inutiles) ; gains de la réflexion = à mesurer sur davantage de données réelles ; consolidation auto désactivée ; aucune mesure A/B réelle de bénéfice affectif (règle « pas d'affirmation sans mesure ») ; pas de graph-time réccrit (valid_until/supersede couvrent). ROLLBACK : drapeaux + git revert + restart ; chat.db inchangée.
Formats : Markdown · JSON · lien permanent : /rapports/pub-3e91900e77eb0eae