Fallimenti e recupero
Il recupero riparte dall'ultima autorità dimostrata. Non trasforma assenza, timeout o ambiguità in successo e non concatena operazioni diverse.
Mappa dei punti di rientro
| Fallimento | Autorità da leggere | Punto di rientro | Azione vietata |
|---|---|---|---|
| Topic non accettato o scoperto | Topic e Knowledge Asset D1 | curazione catalogo | retry cieco del provider |
| Enqueue fallito | job D1 failed |
nuovo job esplicito | marcare queued a mano |
| Output AI invalido | diagnostica job/generazione | correggere input o nuovo job | salvare output parziale |
| Draft revision conflict | Issue e revisione D1 | reload e merge umano | overwrite forzato |
| Quality failure | diagnostiche con path | correggere JSON | bypass del gate |
| Review negata | identità e permessi | reviewer umano attivo | attribuzione inventata |
| Publish negato | stato editoriale e quality | approvare o correggere | PATCH generico a published |
Campaign failed |
aggregate e attempt | retry proiettato | riscrivere attempt |
Campaign unknown |
provider e D1 | riconciliazione autorizzata | duplicare operazione |
| Delivery ambigua | evidenza live provider | stop o nuovo Issue | dichiarare consegna |
Principi di recupero
- Conservare l'evidenza terminale o ambigua prima di agire.
- Identificare il sistema di record della fase.
- Rileggere stato e azioni server-owned.
- Correggere input o configurazione nel loro dominio.
- Creare una nuova operazione soltanto quando esplicitamente autorizzata.
- Non riutilizzare approval, confirmation o retry consumati.
Retry, redelivery e riconciliazione
- Candidate attempt AI: bounded dentro l'orchestratore.
- Queue redelivery: trasporto bounded; un job completato è idempotente.
- Nuovo job editoriale: nuova richiesta umana dopo un fallimento terminale.
- Retry Campaign Draft: nuovo attempt con
parentAttemptId. - Riconciliazione: lettura provider per risolvere un esito, non una nuova mutazione.
Questi meccanismi non sono intercambiabili.
Evidenza sicura
Conservare soltanto stato, codice allowlisted, fase, tempo, relazione tra aggregate e attempt e identificatori bounded necessari. Non conservare prompt, risposta AI grezza, credenziali, destinatari, payload Mailjet o dettagli privati di produzione.