La sincronizzazione cloud dei dati degli utenti non si limita a caricarli e scaricarli. Deve proteggere i contenuti privati durante il trasferimento, contenere i costi di archiviazione, serializzare le scritture provenienti da più dispositivi, comprendere strutture di dati diverse, chiedere conferma prima delle eliminazioni pericolose e conservare una possibilità di ripristino quando una decisione si rivela sbagliata.
Orkas considera la sincronizzazione cloud un confine di responsabilità del prodotto, non un'utilità in background. Conversazioni, agenti, abilità, stato delle attività, file di conoscenza e impostazioni devono poter passare da un dispositivo all'altro mantenendo una chiara catena di responsabilità: il dispositivo prepara i contenuti, l'archiviazione a oggetti conserva i byte e il server gestisce l'indice autorevole.
Il quadro descritto di seguito è quello che usiamo per ragionare sul sistema: flusso dei contenuti crittografati, archiviazione basata sull'identità dei contenuti, blocco della sincronizzazione a livello di account, commit gestito dal server, regole di sincronizzazione deterministiche, gestione dei conflitti assistita dal modello, conferma delle eliminazioni, cestino e marcatori di ripristino.
Il contratto della sincronizzazione
Ogni ciclo di sincronizzazione risponde a quattro domande sul prodotto: quali contenuti possono essere trasferiti, come vengono protetti, chi è autorizzato a pubblicare un nuovo indice cloud e come può l'utente recuperare i dati se la sincronizzazione ha preso la decisione sbagliata?
Il percorso dei contenuti crittografati
I dati dell'utente vengono preparati sul dispositivo prima di raggiungere l'archiviazione. Il motore di sincronizzazione normalizza l'insieme dei dati candidati, calcola l'identità dei contenuti, crittografa i dati da trasferire, li carica utilizzando credenziali di breve durata e verifica i byte scaricati prima di riscriverli sul dispositivo.
Archiviazione e indice
Orkas separa i byte archiviati dall'indice cloud. Gli oggetti contenenti i dati conservano i dati crittografati. L'indice registra quali elementi logici dovrebbero esistere, l'identità dei loro contenuti, i contatori di versione, le dimensioni archiviate, la revisione cloud e lo stato dei marcatori di eliminazione. Il dispositivo conserva anche uno stato di riferimento dell'ultimo ciclo riuscito, così da poter distinguere lo stato precedente dalle nuove modifiche.
Un ciclo di sincronizzazione
Un ciclo inizia con operazioni poco costose e diventa rigoroso solo quando c'è lavoro effettivo da svolgere. Orkas verifica prima se è cambiato qualcosa, poi acquisisce il blocco di sincronizzazione dell'account, ricalcola le modifiche mantenendo quel blocco, trasferisce i contenuti, chiede al server di eseguire il commit delle operazioni sull'indice e infine aggiorna lo stato di riferimento del dispositivo.
Blocco di sincronizzazione e commit
Il blocco di sincronizzazione e il controllo del commit risolvono problemi diversi. Il blocco di sincronizzazione riduce il lavoro concorrente sprecato tra i dispositivi. Il blocco lato server serializza le scritture dell'indice. Il controllo della revisione cloud attesa impedisce che una lettura precedente diventi il nuovo stato autorevole. I controlli della quota e dello schema vengono eseguiti nello stesso percorso di commit gestito dal server.
Le regole prima dei conflitti
La maggior parte delle decisioni di sincronizzazione non riguarda conflitti. Il dispositivo confronta lo stato di riferimento, i dati attuali del dispositivo e l'indice cloud. Se è cambiato solo il cloud, scarica. Se è cambiato solo il dispositivo, carica. Se sono cambiati entrambi, procede in base al tipo di contenuto. Se qualcosa è scomparso, avvia il percorso di eliminazione sicura invece di rimuovere immediatamente i dati.
Gestione dei conflitti
Quando entrambi i lati sono effettivamente cambiati, Orkas non riduce tutto alla regola «vince l'ultima scrittura». I registri aggiornati per aggiunta possono essere uniti integrando i record mancanti. Gli elenchi possono essere uniti in base all'identità stabile dei record. I dati JSON strutturati possono usare contatori di versione e marcature temporali. Per i file Markdown e binari l'approccio è prudente: se il sistema non può dimostrare che l'unione non comporta perdite, conserva una copia completa della versione scartata.
Per i conflitti ambigui relativi a testo o contenuti strutturati, il prodotto può raccogliere le versioni pertinenti per una gestione assistita dal modello. Il modello può spiegare il conflitto, preparare una bozza di versione unificata o aiutare l'utente a scegliere. Non è l'unica protezione: la convalida deterministica, gli originali archiviati e le possibilità di ripristino visibili all'utente rimangono parte del percorso.
Conferma delle eliminazioni
Le eliminazioni vengono trattate come transizioni di stato. Un'eliminazione remota diventa un marcatore di eliminazione. Un'eliminazione sul dispositivo diventa un'operazione candidata. Orkas controlla le scritture recenti, rileva le ondate di eliminazioni estese e sospende il ciclo per chiedere conferma quando la quantità di dati dell'utente che sta scomparendo appare rischiosa.
Cestino e ripristino
Prima che un'eliminazione valida rimuova una copia dal dispositivo, Orkas la sposta nel cestino della sincronizzazione. Le versioni scartate nei conflitti vengono archiviate per consentirne l'esame. I caricamenti in sospeso vengono conservati anche se il commit fallisce, così il ciclo successivo può riutilizzarne i byte. Se un utente cancella deliberatamente i dati cloud, gli altri dispositivi rilevano un marcatore di pulizia e smettono di ricaricare contenuti obsoleti.
I vantaggi di questo approccio
Il risultato è un sistema di sincronizzazione con confini chiari. I dispositivi preparano e verificano i contenuti. L'archiviazione a oggetti conserva i byte crittografati. Il server pubblica l'indice. Il blocco di sincronizzazione dell'account e il blocco del server mantengono ordinati i cicli. Le regole gestiscono i casi comuni. L'assistenza del modello aiuta con i conflitti ambigui. La conferma delle eliminazioni e il cestino proteggono gli utenti dagli errori più costosi.
È questo lo standard di cui Orkas ha bisogno per la sincronizzazione cloud: non magia, non una copia speculare indiscriminata, ma un meccanismo attento che permette ai dati dell'utente di passare da un dispositivo all'altro mantenendo un'esperienza coerente.