Aggiungo un dato a questo — stiamo osservando ciò che sembra essere lo stesso meccanismo sottostante, ma che si manifesta in modo diverso.
Osservato su: Discourse core + discourse-ai, LLM: GPT-5.1 via OpenAI (connessione API personalizzata, non un modello predefinito).
Evidenze di riproduzione
Stesso post sorgente (russo, ~2000 caratteri, intestazioni/grassetto/elenco puntati/link),
tradotto in più lingue tramite traduzione AI nativa:
- Polacco (pl): la markdown dell’immagine incorporata ha perso la sua struttura — è passata da
a un link malformato privo del prefisso!
e del separatore|, con il testo alternativo e le dimensioni uniti come testo normale. Visualizzato come un link cliccabile invece che come un’immagine incorporata. - Ucraino (uk): le sequenze letterali
\n\nappaiono come testo normale in tutto il post, al posto delle interruzioni di paragrafo. La markdown dell’immagine in questa stessa traduzione era intatta — quindi la corruzione non è legata a un singolo sintomo fisso, ma varia a seconda dell’esecuzione.
A differenza della troncamento descritto sopra, il nostro caso non mostra contenuto mancante —
il testo completo è presente, ma con sequenze di escape / sintassi markdown corrotte invece di un output abbreviato. Provider diverso (OpenAI vs Google qui), sintomo diverso (corruzione vs troncamento), stessa causa radice sospettata:
StructuredOutput#read_buffered_property che ricade su
BestEffortJsonParser#extract_key, che non decodifica le sequenze di stringhe JSON (\n rimane letterale) e sembra anche gestire male i caratteri speciali adiacenti alla sintassi markdown quando il fallback si attiva a metà parsing.
Nessun errore nei log di Sidekiq o Rails dalla nostra parte — stesso comportamento di fallimento silenzioso.