ADR 0007: Multilingua — progettare per cinque, rilasciarne due; il resto come locale pack
Far passare una cucitura di locale attraverso ogni livello; rilasciare e testare cinese + inglese nel core; giapponese / italiano / tedesco vengono rilasciati come locale pack della community.
Stato: accettato · Data: 2026-06-17
Registro immutabile. Esente dal tracciamento del drift (nessun
covers). Sostituire con un nuovo record, non modificare.
Fa parte della direzione di prodotto 0002. Vincolato da 0003.
Contesto
L'obiettivo è una base di utenti mondiale: prima il cinese, poi cinese / inglese / giapponese / italiano / tedesco. Il "multilingua" è stratificato — lingua delle risposte, stringhe di messaggi deterministiche (attualmente hardcoded in cinese), parsing dell'input, tokenizzazione del recupero (BM25 usa uni+bigrammi CJK; il giapponese richiede una vera segmentazione; italiano/tedesco richiedono lo stemming) e valutazione per lingua. Rilasciare solo il cinese rischia di sotto-progettare l'astrazione necessaria per la successiva espansione a cinque lingue.
Decisione
Progettare per cinque, rilasciarne due. Far passare una cucitura locale attraverso tutti i livelli —
registro dei tokenizer, catalogo dei messaggi, vocabolario degli intenti, template dei prompt — ciascuno
indicizzato per locale e collegabile via Protocol come tutto il resto. Rilasciare e testare cinese +
inglese nel core. L'inglese come seconda lingua è una scelta deliberata: è la lingua
franca dell'OSS e, non essendo CJK, costringe l'astrazione tokenizer/stemming/delimitazione
a spazi a essere reale anziché limitata al CJK. Giapponese / italiano / tedesco vengono rilasciati come
locale pack della community con una checklist per i contributori.
Alternative considerate (respinte)
- Solo locale di output / i18n minimale (opzione A):
localecontrolla la lingua delle risposte + un catalogo dei messaggi; input/tokenizzazione/corpus invariati. Respinta — sotto-progetta la cucitura rispetto all'obiettivo delle cinque lingue. - Localizzazione completa della pipeline per lingua fin da subito (opzione B): tutte e cinque le lingue di prima classe immediatamente. Respinta — costruire la cucitura e due locale di riferimento, non cinque.
Conseguenze
- I locale pack sono un banco di prova concreto della storia di estensione di
Protocolper gli esterni, rafforzando l'identità di libreria OSS (0003). - I template dei prompt indicizzati per locale sono realizzati da 0008.
- Il vocabolario degli intenti per lingua interagisce con la decisione sul parser in 0010.
- Nuovi artefatti:
LocaleProfile, un registro dei tokenizer, un catalogo dei messaggi, una guida "come aggiungere un locale".
ADR 0006: Asticella di qualità — invarianti come property test, più un benchmark reale di recupero
Definisce la qualità come garanzie dimostrate da property test, più un benchmark reale ed etichettato di recupero; l'accuratezza di dominio è rimandata ai dati dell'utente.
ADR 0008: Prompt — un PromptRegistry pacchettizzato sotto ragspine/prompts/<locale>/
Esternalizzare i prompt in file di template pacchettizzati e indicizzati per locale dietro un Protocol PromptRegistry, riempiti a runtime con i valori del DomainProfile.