Conversation tenue par la façade : le Go lui remet ce qui lui arrive

Avec LOKI_CHAT=rust, la façade sert les routes du chat. Deux chemins
arrivent pourtant au Go sans passer par elle — le tunnel du relais et sa
redistribution /api/e2e/req — et liraient la conversation du Go, périmée,
voire l'écriraient en base par-dessus celle de la façade. facade_chat.go :
- routes du chat remises à la façade (après requireWebAuth), avec le jeton
  interne qui y tient lieu d'authentification, flux compris ;
- /api/e2e/chat lit le flux de la façade et le rechiffre événement par
  événement (nombres repris tels quels) ;
- les événements d'affichage nés ici (bascule du mode Code, critères)
  vont au journal de la façade (/internal/facade/v1/delta) ;
- l'export lit la discussion enregistrée ;
- le déverrouillage de la mémoire fait recharger la façade.

L'outil d'exécution ne rend plus les critères : critNotify les pousse lui-
même, d'où qu'il soit appelé. Sans LOKI_CHAT=rust, rien ne change.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016tcGfJWefW5kUGoC2wL8cv
This commit is contained in:
Claude committed 2026-10-15 11:19:42 +00:00
1 parent 846b561efb
commit 306c7a2f6c
10 files changed
+374 -52

No files matched your search

-16
View File
@@ -84,19 +84,3 @@ func TestOutilInterneSuitesDuResultat(t *testing.T) {
t.Fatalf("aperçu après une erreur : %q", shot)
}
}
// Les critères changés par l'outil reviennent avec son résultat : une
// conversation tenue par la façade les pousse à son journal.
func TestOutilInterneCriteres(t *testing.T) {
testHome(t)
t.Setenv(internalTokenEnv, jetonTest)
got := appelOutil(t, `{"name":"criteria","args":{"action":"add","texts":["les tests passent"]},"caps":{"Agent":true,"Code":true}}`)
list, _ := got["criteria"].([]any)
if len(list) != 1 {
t.Fatalf("critères après add : %v", got)
}
got = appelOutil(t, `{"name":"criteria","args":{"action":"list"},"caps":{"Agent":true,"Code":true}}`)
if _, ok := got["criteria"]; ok {
t.Fatalf("une lecture ne pousse rien : %v", got)
}
}