La maggior parte delle decisioni organizzative lascia una traccia da qualche parte — un’email, un ticket, un commento in uno strumento di workflow, una riga in un foglio di calcolo. Quella traccia è raramente strutturata, raramente ancorata nel tempo in modo evidente-alla-manomissione, e raramente progettata per sopravvivere fuori dal sistema che l’ha creata. Quando una decisione viene successivamente messa in discussione — in un audit, una controversia, un’indagine regolamentare o un’investigazione interna — ricostruire esattamente cosa è stato deciso, da chi, in quale ruolo dichiarato, e in quali condizioni, può essere lento, incompleto o impossibile.
Human Structured Intake offre a una persona un modo strutturato per dichiarare una decisione nel momento in cui si chiude: il tipo di decisione, chi l’ha dichiarata e in quale ruolo, quando è stata chiusa, il contesto di classificazione e soglia applicabile, se era coinvolto un gate di prontezza, ed eventuali segnali rimasti irrisolti. EVIDE canonicalizza quindi quella dichiarazione, calcola un hash deterministico su di essa, e la preserva come record recuperabile in modo indipendente.
Questa distinzione attraversa ogni campo documentato in questa pagina. Dove un valore usa una parola come «verificato,» quella parola descrive cosa una persona o un meccanismo a monte ha dichiarato — non una valutazione eseguita da EVIDE stessa, salvo diversamente specificato per quel campo specifico.
I sette scenari qui sotto sono esempi illustrativi di come diverse funzioni aziendali potrebbero utilizzare Human Structured Intake. Ognuno mostra il tipo di decisione coinvolta, informazioni che potrebbero ragionevolmente essere dichiarate e, altrettanto importante, il confine di ciò che la preservazione di quel record da parte di EVIDE stabilisce e non stabilisce.
Evento / ContestoA un Compliance Officer viene chiesto di autorizzare temporaneamente un’eccezione a una procedura che normalmente sarebbe bloccata, sotto pressione temporale e con una giustificazione aziendale documentata.
Decisione UmanaL’officer approva un’eccezione temporanea e circoscritta, soggetta a condizioni specifiche e a un punto di revisione definito.
Informazioni che Potrebbero Essere Dichiarate
Valore RicostruttivoUn revisore, auditor o regolatore successivo può ricostruire che l’eccezione è stata dichiarata, da chi, in quale ruolo, sotto quali condizioni dichiarate di soglia e prontezza, senza affidarsi alla memoria dell’officer o a un log di sistema che potrebbe nel frattempo essere stato ruotato.
Evento / ContestoUn Security Operations Center rileva un comportamento anomalo. Un responsabile umano esamina la telemetria disponibile e deve decidere se consentire la prosecuzione, bloccare, isolare o escalare.
Decisione UmanaIl responsabile autorizza la prosecuzione operativa mentre l’indagine procede, invece di un isolamento immediato.
Informazioni che Potrebbero Essere Dichiarate
provisional, poiché l’indagine non è ancora chiusaverified_partial, se alcuni ma non tutti i segnali rilevanti sono stati esaminatiValore RicostruttivoSe l’incidente successivamente si aggrava, il record preserva esattamente ciò che era noto, e ciò che era esplicitamente segnalato come sconosciuto, nel momento in cui la decisione è stata presa, distinguendo il senno di poi genuino dalle informazioni realmente disponibili al momento della decisione.
verified_partial insieme a un array unresolved_signals popolato è spesso più onesto di un prematuro verified, usando solo valori e relazioni realmente supportati dal validatore.Evento / ContestoUn sistema assistito da AI produce una raccomandazione su un candidato o dipendente. Un revisore umano esamina quella raccomandazione e prende la decisione finale.
Decisione UmanaIl revisore accetta, modifica o supera la raccomandazione automatizzata.
Informazioni che Potrebbero Essere Dichiarate
Valore RicostruttivoIl record aiuta a preservare una separazione strutturale tra ciò che il sistema automatizzato ha raccomandato e ciò che l’essere umano ha effettivamente deciso, una distinzione spesso difficile da ricostruire a posteriori solo dai log di sistema.
Evento / ContestoUn sistema antifrode blocca una transazione come ad alto rischio. Un analista antifrode esamina il caso e deve decidere se rilasciarla, mantenerla bloccata o escalarla.
Decisione UmanaL’analista rilascia la transazione dopo la revisione, giudicando il segnale di rischio un falso positivo.
Informazioni che Potrebbero Essere Dichiarate
Valore RicostruttivoIl record preserva il contesto dichiarato dell’override umano, chi ha autorizzato il rilascio, quando e su quale base dichiarata, indipendentemente dal fatto che la transazione risulti poi essere stata legittima o meno.
Evento / ContestoUna linea di produzione si ferma automaticamente dopo il rilevamento di un’anomalia. Un responsabile tecnico esamina le condizioni rilevanti e deve decidere se autorizzare un riavvio.
Decisione UmanaIl responsabile autorizza il riavvio, avendo esaminato le informazioni diagnostiche disponibili.
Informazioni che Potrebbero Essere Dichiarate
Valore RicostruttivoSe un guasto correlato si ripete successivamente, il record preserva esattamente quale gate diagnostico è stato dichiarato essere stato controllato, e con quale ambito, prima che il riavvio fosse autorizzato.
verified_partial più un elenco di segnali non risolti popolato, invece di un verified completo.Evento / ContestoUn agente AI richiede di eseguire un’azione sensibile. Prima dell’esecuzione, un’authority umana deve approvare, rifiutare, condizionare o escalare la richiesta.
Decisione UmanaL’authority umana approva l’azione richiesta, soggetta a condizioni dichiarate.
Informazioni che Potrebbero Essere Dichiarate
Valore RicostruttivoHuman Structured Intake registra la decisione umana di autorizzare. Non è deliberatamente la stessa funzione di dichiarare il perimetro operativo entro cui l’agente era autorizzato (quella è l’estensione separata delle declarations documentata nella JSON Schema Reference), e non è un meccanismo automatico di autorizzazione all’esecuzione.
Evento / ContestoDurante un incidente di cybersecurity, un responsabile deve scegliere tra corsi d’azione contrapposti sotto pressione temporale, ad esempio isolare un server rispetto a mantenere un servizio operativo nonostante un indicatore di compromissione.
Decisione UmanaIl responsabile dichiara un corso d’azione scelto, insieme alle informazioni disponibili in quel momento.
Informazioni che Potrebbero Essere Dichiarate
provisional durante un incidente attivoValore RicostruttivoLe timeline degli incidenti vengono spesso ricostruite a posteriori sotto esame. Una dichiarazione strutturata e ancorata nel tempo riduce la dipendenza dalla ricostruzione dell’intento dalla memoria o da log non progettati per uso evidenziario.
Due timestamp diversi compaiono in ogni record Human Structured Intake, e rispondono a due domande diverse:
| Timestamp | A cosa risponde |
|---|---|
decision.closure_timestamp_utc | Quando è stata chiusa la decisione stessa? Questo è il momento in cui la persona dichiara che la decisione è stata effettivamente presa — inserito dalla persona, in UTC. |
| Intake Timestamp | Quando EVIDE ha ricevuto e preservato questo record? Questo è generato dal server nel momento in cui l’intake viene elaborato, non inserito dalla persona. |
Questi due momenti sono spesso diversi, e quella differenza è attesa, non un errore. Una decisione potrebbe essere chiusa alle 16:00 e registrata in EVIDE solo alle 18:03 — a causa di un passaggio di workflow ritardato, un processo di invio in batch, o semplicemente perché la persona che la registra lo fa più tardi nella giornata.
decision_closure_timestamp_utc è un valore dichiarato dalla persona che compila l’intake. Non è un timestamp crittografico o «trusted» di quando la decisione è stata effettivamente presa nel mondo reale — EVIDE non ha modo indipendente di confermare che l’orario di chiusura dichiarato sia accurato. Ciò che EVIDE preserva, indipendentemente, è l’Intake Timestamp: il momento in cui il record stesso è stato ricevuto e canonicalizzato.I sette campi qui sotto forniscono contesto operativo e organizzativo. Sono condivisi con gli altri tipi di intake di EVIDE e non sono specifici del modello evidenziario Human Structured — sono documentati qui brevemente, per completezza, piuttosto che con la stessa profondità dei campi nella sezione successiva.
| Campo | Tipo | Requisito | Cos’è |
|---|---|---|---|
title | stringa | Obbligatorio | Etichetta breve del record. Verificato nel codice: questo valore viene copiato direttamente in decision.summary nel payload canonico — non è un campo separato e slegato. |
business_area_id | intero | Obbligatorio | L’area aziendale a cui appartiene l’intake. Verificato nel codice: deve riferirsi a un’area aziendale esistente e attiva, altrimenti la richiesta viene rifiutata. |
description | stringa | Facoltativo | Descrizione testuale libera salvata insieme al record. Non inclusa nel payload evidenziario canonico stesso. |
context_reference | stringa | Facoltativo | Riferimento operativo testuale libero per uso interno. |
notes | stringa | Facoltativo | Note interne testuali libere. |
topic | stringa | Facoltativo | Etichetta di argomento testuale libera per organizzare gli intake. |
case_reference | stringa | Facoltativo | Riferimento testuale libero al caso o alla pratica. È lo stesso campo usato dalla ricerca «Evidence from the same case» disponibile altrove in EVIDE. |
evidence_reference | stringa | Facoltativo | Riferimento evidenziario testuale libero per collegamenti incrociati interni. |
Questi campi forniscono contesto operativo e organizzativo per individuare e gestire l’intake all’interno della piattaforma. Non fanno parte del modello evidenziario Human Structured documentato nel resto di questa pagina, e la loro presenza o assenza non influisce sui campi evidenziari sottostanti.
I quattordici campi sotto sono i campi specifici del modello evidenziario Human Structured — verificati individualmente contro HumanStructuredIntakeService.php. La tabella offre un riepilogo rapido; segue una scheda esplicativa completa per ogni campo.
| Campo | Tipo | Requisito |
|---|---|---|
decision_type | stringa | Obbligatorio |
decision_closure_timestamp_utc | datetime | Obbligatorio |
authority_role | stringa | Obbligatorio |
authority_id | stringa | Facoltativo |
authority_verification_note | stringa | Facoltativo |
classification_status | enum | Facoltativo |
threshold_status | enum | Facoltativo |
threshold_reference | stringa | Condizionale |
threshold_attribution_status | enum | Facoltativo |
trace_access | stringa | Facoltativo |
boundary_readiness_status | enum | Obbligatorio |
readiness_gate_identifier | stringa | Condizionale |
readiness_gate_scope_reference | stringa | Condizionale |
unresolved_signals[] | array di stringhe | Condizionale |
decision.type
Un’etichetta testuale libera che descrive la categoria della decisione o intervento umano registrato — ad esempio, che tipo di decisione è, non cosa la decisione ha concluso.
Senza questo campo, un record non indicherebbe affatto che tipo di decisione o intervento è stato registrato. Dà ad ogni altro campo del record una categoria a cui riferirsi.
Sempre — questo campo è obbligatorio per ogni Human Structured Intake.
Scegli un’etichetta abbastanza specifica da distinguere questa decisione da altre decisioni di tipo diverso, ma non duplicare la narrazione completa che appartiene al campo title (che diventa decision.summary). Un buon tipo di decisione nomina la categoria dell’azione; il title/summary descrive questa specifica istanza.
Distinto dal campo comune title, che viene copiato direttamente in decision.summary — una breve descrizione in linguaggio naturale di questa specifica decisione. decision_type nomina la categoria; decision.summary narra l’istanza.
Un Compliance Officer che approva un’eccezione temporanea di policy potrebbe registrare il tipo di decisione come «Approvazione eccezione compliance.» Un responsabile tecnico che autorizza un riavvio di produzione potrebbe usare «Autorizzazione riavvio linea di produzione.»
decision.closure_timestamp_utc
Il momento dichiarato in cui la decisione umana stessa è stata chiusa — non il momento in cui il record è stato inviato a EVIDE. Vedi la sezione dedicata Chiusura della Decisione sopra per la distinzione completa dall’Intake Timestamp.
Una decisione e la sua preservazione evidenziaria raramente accadono nello stesso identico istante. Registrare l’orario di chiusura dichiarato, separatamente dall’orario di intake generato dal server, è ciò che permette una ricostruzione storica accurata di quando la decisione è realmente avvenuta.
Sempre — questo campo è obbligatorio. Inserisci il momento in cui la decisione è stata effettivamente chiusa, in UTC, non il momento in cui stai compilando il modulo.
Usa il momento reale in cui la decisione è stata chiusa, espresso in UTC piuttosto che in ora locale. Se non sei sicuro del tuo scostamento UTC locale, uno strumento come time.is/UTC può aiutare a evitare un errore di alcune ore.
Una linea di produzione si ferma alle 14:32 ora locale. Il responsabile tecnico esamina le condizioni e autorizza un riavvio, chiudendo quella decisione alle 16:00 ora locale — ma registra l’intake in EVIDE solo alle 18:03, dopo aver terminato altri compiti urgenti. Il timestamp di chiusura preserva le 16:00 (convertite in UTC); l’Intake Timestamp preserva separatamente le 18:03.
authority.role
Il ruolo organizzativo, in quale veste, la decisione è dichiarata essere stata presa — distinto dall’identità della persona che l’ha presa.
Un nome da solo non indica in quale veste organizzativa una decisione è stata presa. Il ruolo aiuta un lettore successivo a ricostruire l’autorità organizzativa dichiarata dietro la decisione, indipendentemente da chi specificamente ricoprisse quel ruolo in quel momento.
Sempre — questo campo è obbligatorio per ogni Human Structured Intake.
Usa il titolo del ruolo organizzativamente significativo per questa decisione — es. «Compliance Officer,» «SOC Manager,» «HR Director,» «Fraud Analyst,» «Plant Manager.» Testo libero, non un elenco fisso.
Distinto da authority_id (chi) e dall’identità DAPI della sessione loggata (vedi Identificativo dell’Authority sotto). Il ruolo risponde a «in quale veste,» non «quale persona specifica.»
La stessa persona potrebbe ricoprire più ruoli attraverso decisioni diverse; lo stesso ruolo potrebbe essere ricoperto da persone diverse nel tempo. Registrare il ruolo, separatamente dall’individuo, mantiene leggibile il contesto organizzativo anche quando il personale cambia.
authority.id
Un identificativo dichiarato di chi ha preso la decisione. Verificato nel codice: se lasciato vuoto, questo campo assume come default il nome e cognome completo dell’utente attualmente loggato — ma può essere modificato, per il caso legittimo di registrare una decisione presa da qualcun altro.
Non ogni decisione registrata in EVIDE è stata presa dalla persona che sta operando la tastiera. Permettere che questo campo sia modificabile consente a una persona di registrare accuratamente una decisione presa da un collega, mantenendo comunque separatamente preservata l’identità verificata della sessione sottostante.
Lascialo vuoto quando tu, l’utente loggato, sei la persona che ha preso la decisione — il tuo nome verrà usato automaticamente. Compilalo esplicitamente quando stai registrando una decisione presa da una persona diversa.
Non trattare questo campo come un sostituto, o una modifica, della tua identità verificata di account — quell’identità è preservata separatamente e automaticamente, indipendentemente da cosa inserisci qui.
Verificato nel codice: ogni record Human Structured porta anche authority.dapi_number, l’identificativo DAPI della sessione effettivamente loggata e autenticata — impostato automaticamente dal server ad ogni invio e mai letto dal modulo. authority.id e authority.dapi_number sono deliberatamente indipendenti: il primo è un’etichetta dichiarata, il secondo è l’identità verificata della sessione.
Un assistente inserisce una decisione in EVIDE per conto di un manager che ha effettivamente preso la decisione. L’assistente lascia autenticata la propria sessione (preservata automaticamente come authority.dapi_number), ma imposta authority_id sul nome del manager, riflettendo accuratamente chi ha realmente preso la decisione.
authority_id non è la stessa cosa di un’authority verificata in modo indipendente. È un valore dichiarato, testo libero, che per default coincide con l’utente loggato, ma può essere sovrascritto.authority.dapi_number.authority.id dichiarato sia stato esso stesso verificato in modo indipendente rispetto a un sistema di identità esterno.authority.verification
Una nota testuale libera, dichiarata facoltativamente, che la persona che registra la decisione può usare se intende collegare l’authority dichiarata a un riferimento più specifico — ad esempio, un riferimento DAPI per la persona o il ruolo coinvolti.
Dà a chi dichiara un modo per aggiungere un riferimento più specifico all’authority dichiarata, senza richiederne uno su ogni record.
Quando vuoi dichiarare un riferimento più specifico legato all’authority dietro questa decisione, e tale riferimento è genuinamente disponibile.
Non usare questo campo come se scriverlo costituisse una verifica. È una nota dichiarata, non un controllo eseguito da EVIDE.
authority_verification_status calcolato lato server nella risposta API diventa claimed invece di declared — documentato per intero nella JSON Schema Reference. Questo riflette che un riferimento è stato dichiarato, non che sia stato verificato.Un Compliance Officer referenzia un’identità collegata a DAPI interna come contesto di supporto per l’authority dichiarata dietro l’approvazione di un’eccezione, senza che quel riferimento sia controllato in modo indipendente da EVIDE.
claimed risultante descrive cosa è stato dichiarato, non cosa è stato verificato.intervention.classification_status
La classificazione assegnata a questa decisione è considerata consolidata, senza ambiguità note sotto la categorizzazione attiva al momento della chiusura.
Esempio: un caso di frode esaminato e chiuso con una categorizzazione chiara e non contestata.
Non significa: che la classificazione sia fissata permanentemente o immune da future revisioni — solo che nessuna ambiguità era nota alla chiusura.
La classificazione è ancora provvisoria o in attesa di perfezionamento — potrebbe cambiare man mano che emergono più informazioni.
Esempio: un’indagine di sicurezza attiva dove la categoria dell’incidente potrebbe essere rivista mentre l’indagine prosegue.
Non significa: che la decisione stessa sia incompleta — la decisione può comunque essere finalizzata mentre la sua classificazione resta provvisoria.
La classificazione è assegnata nonostante un disaccordo interpretativo noto, o una sovrapposizione con un’altra categoria.
Esempio: una decisione dove due persone ragionevoli potrebbero categorizzare lo stesso caso diversamente, e quel disaccordo è noto alla chiusura.
Non significa: che la decisione sottostante sia invalida — solo che la sua categorizzazione porta con sé una tensione interpretativa riconosciuta.
Rende osservabile la qualità operativa di una classificazione al momento del deposito, invece di presentare ogni classificazione con la stessa fiducia implicita e non dichiarata.
Quando hai una visione di quanto sia consolidata, provvisoria o contestata la classificazione assegnata a questa decisione.
Se non hai una base per giudicare la stabilità della classificazione, è accettabile lasciare questo campo non impostato invece di indovinare — il campo è facoltativo, e il sistema non assume alcuno stato di default se è assente.
intervention.classification_context.threshold_status
Una soglia decisionale rilevante è dichiarata raggiunta.
Esempio: una policy interna richiedeva una giustificazione documentata sopra un certo livello di rischio, ed è stata fornita.
Una soglia decisionale rilevante è dichiarata non raggiunta.
Esempio: la revisione ha rilevato che le condizioni richieste per l’approvazione automatica non erano soddisfatte, richiedendo un intervento manuale.
Una soglia esiste in questo contesto, ma se sia stata raggiunta non è noto al momento della chiusura. Questo è diverso da not_defined — qui, una soglia si applica genuinamente, ma il suo stato non ha potuto essere stabilito.
Nessuna soglia era definita per questo caso. Questo è diverso da unknown — qui, non c’è una soglia applicabile da valutare, piuttosto che una irrisolta.
Una soglia, in questo contesto, è un criterio decisionale predefinito — un limite di policy, una regola operativa, una condizione di approvazione — rispetto al quale una decisione può essere valutata. Questo campo dichiara se una tale soglia è stata raggiunta.
Espone se una soglia decisionale si applicasse a questo caso, e in tal caso, il suo stato dichiarato — informazione spesso implicita e non documentata negli ordinari strumenti di workflow.
Quando una soglia, regola o condizione di policy definita è rilevante per questa decisione.
Quando nessuna soglia del genere si applica realmente a questa decisione — in quel caso, not_defined è il valore accurato, non semplicemente lasciare il campo vuoto se hai motivo di dichiarare attivamente che nessuna soglia si applica.
threshold_reference sotto — se threshold_status è not_defined, qualsiasi valore inserito in threshold_reference viene scartato silenziosamente dal server, anche se inviato.unknown non deve essere letto come equivalente a «nessuna soglia esiste.» È questo che significa not_defined. unknown significa che una soglia si applica, ma il suo stato non ha potuto essere stabilito.intervention.classification_context.threshold_reference
Un riferimento testuale libero alla soglia, policy o regola specifica citata in threshold_status sopra.
Permette di ricondurre la soglia dichiarata a qualcosa di concreto — un documento di policy, una procedura, un controllo interno — invece di rimanere un’affermazione generale non attribuita.
Quando threshold_status è met, not_met, o unknown, e hai un riferimento specifico disponibile — ad esempio, il nome di una policy, un codice di procedura, o un identificativo di documento, forniti solo come esempi illustrativi compatibili con questo campo di testo libero.
threshold_status è not_defined, questo campo viene scartato dal server anche se viene inviato un valore. Non c’è bisogno di lasciarlo vuoto in modo difensivo — il server lo impone comunque, ma è buona pratica lasciarlo vuoto quando nessuna soglia è definita.intervention.classification_context.threshold_authority.attribution_status
Un’authority singola, identificabile e attribuibile per la soglia è stata definita alla chiusura.
Esempio: una policy esplicitamente posseduta da un comitato nominato.
Quando usarlo: quando puoi indicare un unico proprietario chiaro della soglia.
La soglia è definita attraverso più fonti, senza un’authority singola attribuibile.
Esempio: una regola assemblata da diversi documenti di linee guida interne sovrapposti senza un unico proprietario.
Errore interpretativo comune: fragmented non significa che la soglia sia invalida — solo che la sua proprietà è distribuita.
La soglia è presente nella pratica ma non era formalmente definita o attribuibile alla chiusura.
Esempio: una norma interna non scritta ma applicata in modo consistente.
Errore interpretativo comune: implicit non significa che le soglie informali siano illegittime — solo che mancano di attribuzione formale.
L’authority dietro la soglia non ha potuto essere verificata al momento della chiusura.
Esempio: chi dichiara è consapevole che una soglia esiste ma non può identificare chi la possiede.
L’attribuzione della soglia descrive quanto chiaramente l’authority o la proprietà dietro la soglia citata sopra possa essere ricondotta a una persona, ruolo o comitato specifico — non se la soglia stessa sia stata raggiunta.
Diventa rilevante proprio quando uno stato della soglia di met o not_met viene dichiarato, ma la proprietà di quella soglia non è chiaramente attribuibile a un’unica fonte — rendendo quell’ambiguità stessa parte del record preservato.
Quando hai una visione di quanto chiaramente attribuibile sia la proprietà della soglia citata.
intervention.trace.access
Un riferimento testuale libero che permette a qualcuno successivamente di individuare il contesto più ampio di questa decisione all’interno del sistema dove è effettivamente avvenuta — un ticket, un ID di caso, un riferimento di audit trail, un riferimento di log, o un riferimento di workflow, forniti come esempi illustrativi di ciò che è semanticamente compatibile con questo campo.
Una decisione raramente esiste isolata dal più ampio percorso operativo che l’ha circondata. Questo campo preserva un puntatore a quel percorso, senza che EVIDE debba ricevere o memorizzare il percorso stesso.
Ogni volta che esiste un riferimento specifico e individuabile in un altro sistema — un numero di ticket, un fascicolo di caso, o una voce di log di audit — che un revisore successivo potrebbe usare per trovare più contesto.
handoff.boundary_readiness.status
Nessun gate indipendente ha valutato questo oggetto. Chi dichiara afferma solo di considerarlo pronto, senza che sia stato eseguito un controllo indipendente.
Quando sceglierlo: questo è il default onesto quando nessun meccanismo di prontezza separato era coinvolto — non è un valore più debole o minore, è quello accurato per quella situazione.
Un gate di prontezza indipendente ha confermato la stabilità attraverso ciò che dichiara essere visibilità completa, senza segnali irrisolti.
Quando sceglierlo: solo quando un meccanismo genuinamente separato — distinto dalla persona o dal sistema che ha preso la decisione — ha eseguito questa valutazione.
Errore interpretativo comune: questo valore non può essere auto-dichiarato semplicemente sentendosi fiduciosi riguardo a una decisione; significa specificamente che un gate indipendente era coinvolto.
Un gate indipendente ha confermato ciò che è stato in grado di osservare, ma dichiara esplicitamente che alcuni segnali rilevanti restano irrisolti.
Quando sceglierlo: quando un gate di prontezza era coinvolto ma la sua visibilità era genuinamente incompleta — richiede almeno una voce in unresolved_signals.
Un gate di prontezza ha tentato una valutazione, ma la visibilità a sua disposizione era insufficiente per raggiungere qualsiasi conclusione di stabilità. Questo dimostra che la diligenza è stata tentata, non che il processo sia fallito.
Quando sceglierlo: quando un genuino tentativo di valutazione di prontezza non ha potuto raggiungere una conclusione a causa di visibilità insufficiente — richiede anch’esso almeno una voce in unresolved_signals.
La prontezza del boundary dichiara quanto questa decisione sia considerata pronta, al momento della chiusura, per la sua preservazione evidenziaria — nello specifico, se un gate di prontezza indipendente l’ha valutata, e cosa quel gate ha potuto e non ha potuto osservare. È una dichiarazione sullo stato di prontezza, non una proprietà che EVIDE stessa misura o conferma.
Decisioni diverse portano gradi molto diversi di prontezza confermata in modo indipendente prima di essere preservate. Comprimere tutte in un unico stato indifferenziato nasconderebbe esattamente l’informazione di cui un revisore successivo ha più bisogno: questa decisione è stata controllata in modo indipendente prima di essere registrata, e se sì, quanto completamente?
Sempre — questo campo è obbligatorio per ogni Human Structured Intake.
Chiediti concretamente: un meccanismo genuinamente separato da chi ha preso la decisione ha valutato la prontezza di questo oggetto prima che fosse registrato? Se nessun meccanismo del genere era coinvolto, il valore onesto è candidate. Se uno era coinvolto, scegli tra verified, verified_partial, o unverifiable in base a quanto genuinamente completa fosse la visibilità di quel meccanismo.
Verificato nel codice: visibility_surface (un campo interno nel payload canonico) è derivato meccanicamente da questo valore attraverso una mappatura fissa — non è mai una scelta separata fatta dalla persona che compila il modulo. Questo valore governa anche se readiness_gate_identifier/readiness_gate_scope_reference e unresolved_signals sono richiesti (vedi Relazioni Condizionali tra i Campi sotto per le regole esatte).
candidate, sia readiness_gate_identifier sia readiness_gate_scope_reference diventano obbligatori insieme. Se questo valore è verified_partial o unverifiable, almeno una voce in unresolved_signals diventa obbligatoria.Un responsabile tecnico che autorizza un riavvio di produzione dopo un’anomalia potrebbe dichiarare verified_partial se un gate diagnostico automatizzato ha controllato la maggior parte, ma non tutti, i sensori rilevanti prima del riavvio — con il sensore specifico non controllato registrato come segnale non risolto.
verified in questo campo è un valore dichiarato nel modello dati, non una valutazione eseguita da EVIDE. EVIDE stessa non controlla se il gate dichiarato abbia effettivamente operato, o se le sue conclusioni fossero accurate.candidate come un invio carente o incompleto — è il valore strutturalmente accurato ogni volta che nessun gate di prontezza indipendente era genuinamente coinvolto.verified descrive cosa è stato dichiarato riguardo a un gate a monte o indipendente — non è mai la verifica di EVIDE stessa della decisione.handoff.boundary_readiness.readiness_gate.identifier
Un gate, in questo contesto, è qualsiasi meccanismo — umano o automatizzato — che ha eseguito la valutazione di prontezza dichiarata in boundary_readiness_status. Questo campo nomina o identifica quel meccanismo.
Permette di ricondurre la valutazione di prontezza dichiarata a qualcosa di specifico, invece di rimanere un’affermazione generale non attribuita.
Obbligatorio ogni volta che boundary_readiness_status è qualsiasi cosa diversa da candidate — cioè, ogni volta che si dichiara un gate indipendente.
readiness_gate_scope_reference ogni volta che boundary_readiness_status non è candidate. Se uno dei due manca in quella condizione, la richiesta viene rifiutata. Nessuno dei due campi viene richiesto quando lo stato è candidate.Un controllo diagnostico usato prima di autorizzare un riavvio di produzione, o il codice della procedura interna che governa una revisione di eccezione di compliance.
handoff.boundary_readiness.readiness_gate.scope_reference
Mentre readiness_gate_identifier nomina il meccanismo o controllo dichiarato aver operato, questo campo descrive il perimetro o ambito che quel meccanismo è dichiarato aver coperto.
Un gate nominato è più utile quando anche la sua copertura è specificata — lo stesso controllo diagnostico potrebbe coprire un’intera struttura in un caso e una singola macchina in un altro.
Obbligatorio nella stessa condizione di readiness_gate_identifier sopra: ogni volta che boundary_readiness_status è qualsiasi cosa diversa da candidate.
Distinto da readiness_gate_identifier: uno nomina il meccanismo, l’altro descrive cosa è dichiarato aver coperto.
Per un riavvio di linea di produzione, l’identificatore potrebbe nominare il controllo diagnostico usato, mentre il riferimento di ambito nomina la macchina o linea specifica che quel controllo copriva.
handoff.boundary_readiness.unresolved_signals
Un segnale non risolto è un elemento specifico rimasto irrisolto o non attribuito al momento in cui la valutazione di prontezza è stata fatta — il «perché» dichiarato dietro un risultato verified_partial o unverifiable, non solo il fatto che uno si sia verificato.
Senza questo elenco, un lettore che incontra «Prontezza del boundary: verified_partial» saprebbe che qualcosa era incompleto, ma non cosa — spesso l’informazione singola più utile per una ricostruzione successiva della decisione.
Obbligatorio ogni volta che boundary_readiness_status è verified_partial o unverifiable — almeno una voce è richiesta in quel caso.
Non usato, e normalmente lasciato vuoto, quando lo stato è candidate o verified, poiché in quei casi non viene dichiarata alcuna lacuna irrisolta.
Elenca ogni elemento specifico rimasto irrisolto, nel modo più concreto possibile — sono supportate più voci quando più di un segnale è rimasto aperto.
Direttamente governato da boundary_readiness_status: obbligatorio (minimo una voce) quando quel valore è verified_partial o unverifiable.
boundary_readiness_status è verified_partial o unverifiable e questo array è vuoto, la richiesta viene rifiutata.Per lo scenario di autorizzazione SOC nei Casi d’Uso Aziendali sopra, questo potrebbe leggere: «Origine di due richieste API non ancora attribuita.»
Le regole sotto sono verificate direttamente contro il validatore in HumanStructuredIntakeService.php — non assunte dai nomi dei campi o da schemi di documentazione generali.
| Se… | Allora… |
|---|---|
threshold_status = not_defined | Qualsiasi valore inviato in threshold_reference viene scartato dal server, anche se presente nella richiesta. |
boundary_readiness_status ≠ candidate | readiness_gate_identifier E readiness_gate_scope_reference diventano entrambi obbligatori insieme. Se uno dei due manca, la richiesta viene rifiutata. |
boundary_readiness_status ∈ {verified_partial, unverifiable} | unresolved_signals[] diventa obbligatorio, con un minimo di una voce. Un array vuoto viene rifiutato sotto questa condizione. |
Una voce di evidence_references[] include un hash_value | hash_scope e hashed_by diventano entrambi obbligatori insieme per quella voce. Una dichiarazione hash parziale — un valore senza entrambi — viene rifiutata. |
visibility_surface, un campo interno dentro il payload canonico, è sempre derivato meccanicamente da boundary_readiness_status attraverso una mappatura fissa. Non è mai un valore scelto direttamente dalla persona che compila il modulo.Un riferimento esterno all’evidenza permette a un Human Structured Intake di puntare a un artefatto — un documento, uno screenshot, un file di log, una policy — che resta sotto il controllo dell’organizzazione stessa, senza che quell’artefatto venga mai caricato o detenuto da EVIDE. Verificato nel codice: questo riusa, senza modifiche, l’esatta struttura evidence_references[] già documentata nella JSON Schema Reference — non un meccanismo parallelo o specifico di Human.
Questo conta perché risolve una tensione genuina e comune: un’organizzazione spesso ha bisogno di preservare una dichiarazione verificabile su una decisione, evitando deliberatamente di consegnare un documento interno sensibile a qualsiasi sistema esterno. I riferimenti esterni all’evidenza permettono a entrambe le cose di accadere contemporaneamente.
POLICY-CREDIT-REV7. L’organizzazione mantiene quel documento sotto il proprio controllo. L’Human Structured Intake può preservare un riferimento dichiarato a quella policy e, quando disponibile, il suo digest SHA-256 — senza che EVIDE riceva mai il documento stesso.artifact_type | Tipo dichiarato testuale libero — es. screenshot, pdf, policy_document. Non un’enumerazione fissa. |
pointer | Un riferimento specifico dell’implementazione alla posizione dell’artefatto. EVIDE non lo risolve, dereferenzia o recupera. |
declared_origin | Descrizione testuale libera di dove proviene l’artefatto. |
declared_relationship | Descrizione testuale libera di come l’artefatto si relaziona a questa decisione. |
declared_description | Descrizione testuale libera leggibile dall’uomo. |
declared_retention_status | Uno tra persistent_storage, rolling_buffer, unknown. Verificato nel codice: mai impostato automaticamente per default — incluso solo se la persona lo seleziona attivamente. |
Un riferimento può opzionalmente portare un digest SHA-256 dichiarato dell’artefatto. Vedi la sezione dedicata SHA-256 sotto per cosa questo stabilisce esattamente e cosa non stabilisce.
SHA-256 è una funzione hash crittografica: prende qualsiasi file e produce deterministicamente un digest a lunghezza fissa tale che anche una minuscola modifica al file produce un digest completamente diverso. In un riferimento esterno all’evidenza, un digest SHA-256 dichiarato permette a una parte successiva che detiene l’artefatto reale di verificare se corrisponda a ciò che è stato dichiarato al momento dell’intake.
Verificato nel codice: la validazione dell’hash su questo canale è puramente sintattica — il server conferma che il valore dichiarato sia esattamente 64 caratteri esadecimali, nient’altro. EVIDE non riceve l’artefatto e non può controllare se il digest dichiarato corrisponda realmente ad esso. Il valore dichiarato viene preservato esattamente come inserito, mai normalizzato in maiuscolo o minuscolo.
La distinzione che conta è tra cinque cose separate: l’artefatto esterno stesso (mai ricevuto da EVIDE); il riferimento dichiarato ad esso; il digest dichiarato (facoltativo, controllato solo sintatticamente); un confronto hash successivo che qualcun altro potrebbe eseguire; e la preservazione della dichiarazione da parte di EVIDE — l’unica di queste cinque cose che EVIDE effettivamente esegue.
Il principio generale: preservazione strutturata della dichiarazione e del suo contesto evidenziario dichiarato associato, esattamente come inviato, canonicalizzato e sottoposto a hash in modo deterministico ed evidente-alla-manomissione.
Tornando allo scenario Compliance dai Casi d’Uso Aziendali: a un Compliance Officer, Jane Whitfield, viene chiesto di approvare un’eccezione temporanea alla checklist standard di onboarding fornitori, sotto una giustificazione aziendale documentata e un punto di revisione definito.
Chiude la decisione alle 16:00 UTC, ma registra l’intake più tardi, alle 18:03 UTC, dopo aver terminato una chiamata. Dichiara il suo ruolo come Compliance Officer, referenzia la policy interna che governa eccezioni di questo tipo, e nota che un comitato di revisione interno — un meccanismo indipendente dalla sua stessa decisione — ha confermato le condizioni rilevanti con visibilità completa prima che lei prendesse la sua decisione. Referenzia il ticket interno che traccia questa eccezione, e separatamente dichiara un documento di policy con il suo digest SHA-256, mantenuto internamente invece di essere caricato su EVIDE.
Ogni valore sotto è scelto per essere internamente coerente e compatibile con le regole condizionali documentate sopra — i campi sono inclusi perché si adattano a questo caso specifico, non semplicemente per dimostrare che ogni campo esiste.
Questo è il payload canonico che EVIDE costruisce dall’esempio sopra — verificato campo per campo contro HumanStructuredIntakeService.php. I campi generati automaticamente dal server (mai letti dal modulo) sono contrassegnati di conseguenza.
"evide_schema": "2.1", "source_system": "evide_web_human", // generato dal server, fisso per questo canale "source_reference": "web:1042:a3f91c2d", // generato dal server "source_timestamp_utc": "2026-04-07T18:03:00Z", // generato dal server -- quando EVIDE ha elaborato questo intake "decision": { "type": "Compliance exception approval", "status": "finalized", // sempre fisso su questo canale "closure_timestamp_utc": "2026-04-07T16:00:00Z", // dichiarato -- vedi Chiusura della Decisione sopra "summary": "Temporary exception to vendor onboarding checklist" // copiato dal campo comune "title" }, "authority": { "id": "Jane Whitfield", // dichiarato (di default l'utente loggato se vuoto) "role": "Compliance Officer", "dapi_number": "DAPI-2K9-XXXX", // sempre generato dal server dalla sessione, mai dal modulo "verification": "Linked to internal DAPI reference for the review board" }, "intervention": { "classification_status": "stable", "classification_context": { "threshold_status": "met", "threshold_reference": "Internal policy COM-EXC-04, section 3.2", "threshold_authority": { "attribution_status": "attributed" } }, "trace": { "access": "Ticket COMP-2026-0417" } }, "handoff": { "reconstruction_independence": "declared", // fisso "submission_status": "not_submitted", // fisso al momento dell'intake "acceptance_status": "not_claimed", // fisso al momento dell'intake "boundary_readiness": { "status": "verified", "visibility_surface": "declared_complete", // derivato meccanicamente dallo status sopra "readiness_gate": { "identifier": "COM-EXC-04 review board", "scope_reference": "Vendor onboarding exceptions, Q2 2026" } } }, "extensions": ["evidence_references"], "evidence_references": [ { "artifact_type": "policy_document", "pointer": "internal://policies/vendor-onboarding-v3", "declared_origin": "internal policy repository", "declared_description": "Policy document supporting this exception approval", "hash": { "algorithm": "SHA-256", "value": "cabbcf9f83fb765cd82569e477b6b3abf51d81eba9b3b92f8e9904be98a1a2f8" }, "hash_scope": "full_file", "hashed_by": "internal document management system" } ]
unresolved_signals è correttamente assente qui — è richiesto solo quando boundary_readiness.status è verified_partial o unverifiable, non verified come in questo esempio.Human Structured Intake esiste affinché una decisione umana dichiarata, e il suo contesto evidenziario dichiarato, possano sopravvivere fuori dal sistema che li ha prodotti — recuperabili in modo indipendente, sottoposti a hash deterministico, e ancorati nel tempo.