Un mandato è un artefatto, non un’impostazione.
La delega delimitata è una capacità all’interno di Execution Authorization, non una categoria a sé. Un Task Contract inquadra la catena; non ne sostituisce alcun pezzo. Ogni passo continua a produrre il proprio Execution Grant a uso singolo e il proprio Action Receipt.
Progetto
TaskContractV1
Il contratto vincola, in un unico oggetto firmato: il tenant, gli attori abilitati ad agire sotto di esso, il Guardian e l’audience a cui è rivolto, la revisione, i passi, i loro vincoli, il budget e le sue unità, la finestra di validità, la policy e il manifesto in vigore, e il contatore di revoca.
taskId · revisionIdentità e versione. Un contratto approvato non si modifica mai sul posto: qualsiasi cambiamento a un passo produce una nuova revisione da revisionare di nuovo.
tenant · guardianId · audienceDi chi è e quale unico punto di esecuzione può consumarlo. Un mandato si rivolge a un Guardian.
actors[]Ogni attore lega un identificatore a una chiave e alla sua thumbprint. Un passo si reclama dimostrando il possesso di quella chiave contro una sfida fresca, consumata in modo atomico.
authorityLa fissa il protocollo per operazione. Il chiamante non la sceglie e non può degradarla nella stessa richiesta, e un mandato approvato non abbassa mai la soglia di un passo.
steps[]Ogni passo nomina la sua operazione canonica, il suo provider, la sua lista di risorse, il digest dei suoi parametri esatti, e porta maxUses fissato a uno.
budgetDurevole e atomico per tenant, task, revisione e passo. Impegnato significa consumato più tutto ciò che è prenotato il cui esito è pendente o incerto, così un grant non può prenotare due volte.
issuedAt · expiresAtLa finestra. Dopo di essa non viene inviato alcun passo nuovo; non c’è periodo di grazia né rinnovo dall’interno del task.
policyVersion · revocationVersionLa policy locale firmata in vigore e il contatore di revoca. Se storage o revoca non sono disponibili, non escono nuovi effetti.
L’intersezione vale ancora
permesso effettivo = mandato ∩ grant ∩ policy locale firmata ∩ vincoli dell’adattatore ∩ budget ∩ identità ∩ validità e revoca
Il cloud non allarga mai il tetto locale. Un mandato è un termine in più nell’intersezione, mai un modo per aggirarla, e il Guardian li applica tutti prima di contattare un provider.
Macchina a stati
Un task occupa esattamente uno stato, e il ledger registra la transizione, non l’intenzione.
- draft
- approved
- running
- paused
- completed
- revoked
- expired
Esclusioni deliberate
- Nessuna subdelega. Un mandato, un Guardian, un budget; un task non può cedere una parte di sé a un altro attore né tirare su un secondo punto di esecuzione.
- Nessun effetto aperto. Un passo senza operazione canonica e senza digest dei parametri non è un passo.
- Nessuna autorizzazione permanente. Ogni mandato scade, e la scadenza non è rinnovabile dall’interno del task.
- Ciò che l’attore legge — documenti, output di tool, contenuto web, memoria — è input, mai autorità. Non può estendere il contratto.
- L’adattatore determina l’effetto canonico e lo stato precedente. Il riassunto di un agente, uno schema in sola lettura o una destinazione presa dal contenuto non vengono accettati come verità.
Il ruolo del reader
Il reader locale è esplicativo. In questo profilo un riscontro isolato, un’astensione, una non valutazione o una lettura parziale non bloccano, non revocano e non impongono approvazioni aggiuntive su un effetto esatto già approvato e consentito. L’autorità non viene mai alzata per compensare un avviso, e mai abbassata perché nessun avviso è comparso. Identità, firma, budget, precondizione e revoca continuano a fallire in posizione chiusa — questo non è un permesso per eseguire senza controlli.
Stato
Progetto. Lo schema e i suoi invarianti esistono e sono coperti da test. Nessun mandato delegato è stato eseguito contro un provider reale, quindi questo profilo è etichettato come simulato. Un risultato non viene mai estrapolato da un mock né da un altro connettore, e un connettore legacy testato con MFA o quorum non accredita la delega a più passi.
Domande aperte
I dettagli di canonicalizzazione, i limiti di dimensione e quantità, la gestione dell’orologio e il rifiuto dei campi sconosciuti si fissano prima di costruire qualsiasi runtime, e si pubblicano come vettori di test versionati accanto al verificatore. Il verificatore esce prima del profilo: non si emette nulla che non si possa ancora verificare in modo indipendente.