Documentació d'Asset Core

Documentació del motor d'estat del món determinista i referències de l'API.

Decision Gate docs

Prevol i Compromís Invers

La validació de prevol permet comprovar un compromís sense modificar l’estat del món. El compromís invers permet compensar un compromís anterior emetent un nou compromís derivat del pla invers emmagatzemat en el sidecar de desfer. Ambdós estan dissenyats per preservar la reproducció determinista i el contracte d’escriptura única.

Problema que resol aquest concepte

Els sistemes complexos necessiten dues capacitats que són fàcils de malinterpretar:

  • Valida plans de múltiples passos sense tocar l’estat de producció.
  • Compensar els canvis compromesos sense reescriure la història.

El preflight i el reverse commit proporcionen aquestes capacitats mentre mantenen el registre de commits autoritari i segur per a la reproducció.

Idees principals

Validació previatge

Preflight executa la mateixa lògica L2/L3 que un compromís real, però s’executa en un entorn aïllat, de manera que no hi ha mutacions, no s’afegeix al registre de compromisos i no hi ha emissions d’observadors.

Propertats clau:

  • Resultats equivalents a un compromís utilitzant el mateix ordre d’operacions.
  • Semàntica de fallada ràpida (el primer error acaba la validació).
  • Sortida determinista per a un estat del món donat.
  • Retorna validated_world_seq perquè els clients puguin coordinar la concurrència optimista.
  • Sense mutació d’estat, sense afegir al registre, sense emissions d’observadors.

L’output està vinculat a la seqüència mundial en el moment de la validació. Si nous commits arriben abans que enviïs el commit real, torna a executar el preflight per confirmar que el pla encara es manté.

Utilitzeu preflight quan necessiteu comprovar un pla, un horari o una seqüència multi-op abans d’emetre el compromís real.

Compromís invers

Un reverse commit és una escriptura regular que carrega un pla de reversió emmagatzemat des del sidecar d’undo. El pla es construeix en el moment del commit a partir del registre d’undo més l’estat posteriors del commit, i s’aplica com un nou commit només si l’estat actual encara coincideix amb l’estat posterior esperat del pla. No reescriu la història ni elimina esdeveniments anteriors.

Propertats clau:

  • Utilitza commit_id com a identificador extern per a la reversió.
  • Requereix un motiu d’auditoria i carrega una entrada de sidecar d’anul·lació per al compromís objectiu.
  • Valida l’estat actual contra l’estat postesperat del pla (capturat en el moment del commit) abans d’aplicar el pla invers.
  • Tanca si falla si l’entrada de desfer és absent o ha caducat.
  • Emiteix una resposta de commit normal amb nova metadada de seqüència.

Revertir el commit més recent sol ser senzill perquè l’estat actual encara coincideix amb l’estat post-expected del pla. Revertir commits històrics és condicional: altres commits poden haver mogut o eliminat actius, omplert contenidors o canviat restriccions de classe. El pla de reversió falla en aquests conflictes.

El revertir un commit és mecànic: aplica el pla emmagatzemat o falla. Si té èxit contra un món canviat, reflecteix els passos d’anul·lació emmagatzemats aplicats a l’estat actual, no l’anul·lació a nivell d’intenció. Si necessites desfer una història més profunda, planifica un commit compensatori i verifica’l contra l’estat actual.

Desfés la disponibilitat del sidecar

La reversió del compromís només funciona si el sidecar d’anuïció està habilitat i el compromís objectiu encara es troba dins de la política de retenció. La disponibilitat depèn de la configuració de desplegament i de la governança de l’espai de noms. Si el sidecar està deshabilitat o l’entrada és eliminada, la reversió del compromís ha de fallar de manera segura.

Com s’integra al sistema

Commit request -> Preflight (optional) -> Commit -> Commit log append
Reverse commit request -> Load reverse plan -> Validate post-state -> Compensating commit (if valid) -> Commit log append

Preflight és un camí de validació; el reverse commit és un camí d’escriptura compensatori. Ambdós passen pel daemon d’escriptura i han de respectar les regles d’autenticació, quota i política.

Invariants i garanties clau

Validació no mutativa

Preflight mai canvia d’estat, mai afegeix al registre i mai emet observadors. És segur per a la planificació i l’automatització.

Història només d’append

La reversió del compromís afegeix un nou compromís. El compromís original roman al registre i a la traçabilitat d’audiència.

Fail-closed undo

Si les dades de desferència falten o han caducat, la reversió es nega. Les reversions parcials no estan permeses.

Autorització explícita

La reversió de compromís és una operació distincta i està subjecta a RBAC. Els motius d’auditoria es registren amb la reversió de compromís.