Arquitectura de tiempo de ejecución y paquete de Arxi Recorder
Audience: Engineers changing ingest/runtime behavior, bundle export, or Audiencia: Ingenieros que cambian el comportamiento de ingestión/ejecución, exportación de paquetes o rutas de verificación.
Tabla de Contenidos
- Resumen Ejecutivo
- Ciclo de Vida del Motor de Grabación
- Auto-Sellado y Sellado de Segmentos
- Límite del Adaptador
- Pipeline de Constructor de Paquetes
- Verificador de 7 Fases
- Límite del Proveedor de Evidencia
- Estado de Dureza en Tiempo de Ejecución
- Referencia Cruzada Archivo por Archivo
Resumen Ejecutivo
arxi-recorder es la capa de orquestación en tiempo de ejecución. Sella entradas no confiables en sobres encadenados de solo anexar, controla el ciclo de vida de los segmentos, construye paquetes portátiles a partir de álgebra de selectores y verifica paquetes fuera de línea en memoria.
F:crates/arxi-recorder/src/lib.rs L11-L29 F:crates/arxi-recorder/src/lib.rs L34-L56
Ciclo de vida del motor de grabación
RecorderEngine posee el estado del segmento activo y hace cumplir las invariantes:
- cero o un segmento activo,
- la secuencia comienza en 0 por segmento,
- progresión de la cabeza de la cadena por anexar,
- comportamiento de solo anexar.
F:crates/arxi-recorder/src/engine.rs L22-L35 F:crates/arxi-recorder/src/engine.rs L108-L137
Comportamiento de inicio:
- valida
RecorderConfig, - rechaza valores
recorder_idmalformados durante la validación de la configuración, - recupera los metadatos del segmento activo si están presentes,
- executes startup read-back verification for active segment tails when
startup_verification_depth > 0. F:crates/arxi-recorder/src/engine.rs L154-L197 F:crates/arxi-recorder/src/engine.rs L372-L543
Comportamiento de ingestión:
- cálculo del hash de contenido y del hash de cadena,
- inyección de firma opcional,
- almacenar anexos,
- in-memory chain-head and envelope-count update. actualización de la cabeza de cadena en memoria y conteo de sobres. F:crates/arxi-recorder/src/engine.rs L376-L436
Auto-Sellado y Sellado de Segmentos
La configuración admite None, AfterCount, AfterDuration y Combined. Los umbrales de valor cero son rechazados en la validación. recorder_id debe satisfacer las mismas restricciones de forma de identidad utilizadas por los identificadores de actores en tiempo de ejecución, por lo que los IDs inválidos fallan en el inicio en lugar de más tarde en los flujos de segmento/sello. F:crates/arxi-recorder/src/config.rs L36-L85 F:crates/arxi-recorder/src/config.rs L117-L165
Flujo de sellado:
- el sello añade
system.segment.sealedcomo sobre final, - persiste
SealRecord, - marks segment sealed and clears active state. marca el segmento como sellado y limpia el estado activo. F:crates/arxi-recorder/src/engine.rs L438-L503
La evaluación de auto-sellado se invoca después de cada adición exitosa de un sobre de datos. F:crates/arxi-recorder/src/engine.rs L505-L565
Límite del Adaptador
LocalRecorderAdapter envuelve RecorderEngine en tokio::sync::Mutex para satisfacer los requisitos del rasgo compartido Send + Sync mientras se preserva el acceso exclusivo mutable en tiempo de ejecución. F:crates/arxi-recorder/src/local_adapter.rs L20-L24
emit_envelope y emit_with_attachments llaman a una validación explícita de fallo cerrado antes de la delegación del grabador. F:crates/arxi-recorder/src/local_adapter.rs L120-L165 F:crates/arxi-recorder/src/validation.rs L46-L83
Constructor de Paquetes Pipeline
BundleBuilder::build pipeline:
- resolver selector,
- agrupar sobres por segmento de manera determinista,
- construir metadatos de inclusión por segmento,
- calcular los padres omitidos y el cierre de adjuntos,
- ensamblar el manifiesto de verificación.
F:crates/arxi-recorder/src/bundle_builder.rs L17-L35 F:crates/arxi-recorder/src/bundle_builder.rs L129-L172
La álgebra de selectores incluye selectores de segmento/tiempo/filtro/ID y uniones compuestas con deduplicación determinista a través de BTreeMap. F:crates/arxi-recorder/src/bundle_builder.rs L415-L479
Los segmentos parciales utilizan anclajes de prueba (chain_hash inmediatamente antes del primer sobre incluido) para la verificación de continuidad. F:crates/arxi-recorder/src/bundle_builder.rs L255-L290
Verificador de 7 Fases
Verifier::verify ejecuta verificaciones de paquetes en memoria en este orden:
- formato de manifiesto/algoritmo de hash y verificaciones de integridad estructural,
- integridad del hash del archivo adjunto,
- hash del contenido del sobre y presencia de adjuntos,
- continuidad de la cadena por segmento,
- vinculación de predecesores entre segmentos,
- verificación de firma con raíz de confianza opcional + política de confianza,
- asamblea de veredictos.
Antes de la ejecución de la fase, el verificador aplica una política de trabajo limitado y falla cerrado si se superan los límites (segmentos, sobres por segmento, sobres totales, adjuntos totales y referencias de adjuntos por sobre).
F:crates/arxi-recorder/src/verifier.rs L13-L26 F:crates/arxi-recorder/src/verifier.rs L95-L136 F:crates/arxi-recorder/src/verifier.rs L500-L651
Todas las comparaciones de hash utilizan igualdad en tiempo constante. F:crates/arxi-recorder/src/verifier.rs L29-L52
Límite del Proveedor de Evidencia
RecorderEvidenceProvider implementa el rasgo EvidenceProvider delegando en almacenar consultas, construir paquetes y verificar. F:crates/arxi-recorder/src/evidence_provider.rs L48-L67
Métodos:
list_bundlesenumerates sealed segments with stable IDs derived fromlist_bundlesenumera segmentos sellados con IDs estables derivados de los IDs de segmento y admite la semántica de cursor/límite,fetch_bundleresolves the requested bundle ID to a sealed segment and buildsfetch_bundleresuelve el ID de paquete solicitado a un segmento sellado y construye conBundleSelector::BySegment,verify_bundledelega a un verificador de 7 fases,query_envelopesdelega a las consultas de filtro del almacén de sobres.
Los controles de límite de proveedor ahora incluyen una normalización/rechazo explícito de fallo cerrado para los límites de solicitud y los límites de materialización del sobre de segmento.
F:crates/arxi-recorder/src/evidence_provider.rs L123-L286
Estado de Endurecimiento en Tiempo de Ejecución
Recientemente completado en tiempo de ejecución:
- Verifier phase 6 now enforces trust-root key lookup, cryptographic signature La fase 6 del verificador ahora impone la búsqueda de la clave raíz de confianza, la validación de la firma criptográfica y las comprobaciones de la política de confianza cuando se proporciona una raíz de confianza.
- Recorder startup now performs fail-closed read-back verification over the
El inicio del grabador ahora realiza una verificación de lectura de cierre en caso de fallo sobre los últimos
Nsobres del segmento activo (startup_verification_depth). - Evidence provider now exposes stable bundle IDs and true fetch-by-ID El proveedor de evidencia ahora expone identificadores de paquete estables y verdaderas semánticas de búsqueda por ID para segmentos sellados.
- Verifier phase 1 now fail-closes on manifest structural tampering (segment La fase 1 del verificador ahora se cierra por fallo ante la manipulación estructural del manifiesto (desajustes en los metadatos de segmento y la lista de adjuntos).
- Recorder config validation now fail-closes malformed
recorder_idvalues La validación de la configuración del grabador ahora cierra de forma segura los valoresrecorder_idmalformados antes de que se alcance el comportamiento de apertura/sellado en tiempo de ejecución. - Verifier ahora impone límites de trabajo explícitos y acotados en el límite de la biblioteca.
- Evidence provider now enforces bounded query/list/materialization limits and El proveedor de evidencia ahora aplica límites de consulta/lista/materialización acotados y rechaza los límites proporcionados por el llamador que son excesivos.
- System tests now cover manifest structural tamper, single-open-segment Las pruebas del sistema ahora cubren la manipulación estructural del manifiesto, la aplicación de segmentos abiertos únicos y los caminos de corrupción de persistencia que fallan en cerrado de extremo a extremo.
F:crates/arxi-recorder/src/verifier.rs L509-L651 F:crates/arxi-recorder/src/engine.rs L154-L197 F:crates/arxi-recorder/src/engine.rs L380-L543 F:crates/arxi-recorder/src/evidence_provider.rs L52-L300 F:system-tests/tests/suites/bundle.rs L563-L684 F:system-tests/tests/suites/recorder.rs L279-L327 F:system-tests/tests/suites/persistence.rs L375-L468
Referencia Cruzada Archivo por Archivo
| Área | Archivo | Notas |
|---|---|---|
| Ciclo de vida del motor | crates/arxi-recorder/src/engine.rs | Flujo de apertura/grabación/sellado y progresión de la cadena. |
| Configuración de tiempo de ejecución | crates/arxi-recorder/src/config.rs | Invariantes de configuración de auto-sellado y arranque. |
| Límite del adaptador | crates/arxi-recorder/src/local_adapter.rs | Implementación del adaptador en proceso. |
| Validación de entrada | crates/arxi-recorder/src/validation.rs | Comprobaciones de sobres no sellados que fallan en cerrado. |
| Constructor de paquetes | crates/arxi-recorder/src/bundle_builder.rs | Resolución de selectores y ensamblaje determinista de paquetes. |
| Verificador | crates/arxi-recorder/src/verifier.rs | Algoritmo de verificación de 7 fases. |
| Proveedor de evidencia | crates/arxi-recorder/src/evidence_provider.rs | Implementación de la interfaz de evidencia del lado de extracción. |
| Modelo de error | crates/arxi-recorder/src/error.rs | Taxonomía de fallos específica del grabador. |