Arquitectura de Runtime i Bundle del Recorder
Audience: Engineers changing ingest/runtime behavior, bundle export, or Audiència: Enginyers que canvien el comportament d’ingestió/execució, l’exportació de paquets o els camins de verificació.
Taula de continguts
- Visió Executiva
- Cicle de vida del motor de gravació
- Auto-Sellar i Sellat de Segment
- Adaptador de límit
- Bundle Builder Pipeline
- 7-Fases Verificador
- Proveïdor d’Evidències Límits
- Estat de Dureça en Temps d’Execució
- File per Fitxer Referència Creuada
Executive Overview
recorder és la capa d’orquestració en temps d’execució. Segella entrades no fiables en sobres enllaçats en cadena només d’addició, controla el cicle de vida dels segments, construeix paquets portables a partir de l’àlgebra de selectors i verifica paquets fora de línia en memòria.
F:crates/recorder/src/lib.rs L11-L29 F:crates/recorder/src/lib.rs L34-L56
Cicle de vida del motor de gravació
RecorderEngine posseeix l’estat del segment actiu i fa complir les invariants:
- zero o un segment actiu,
- la seqüència comença a 0 per segment,
- progressió del cap de cadena per afegir,
- comportament només d’append.
F:crates/recorder/src/engine.rs L22-L35 F:crates/recorder/src/engine.rs L108-L137
Comportament d’inici de l’aplicació:
- valida
RecorderConfig, - rebutja valors
recorder_idmal formats durant la validació de la configuració, - recupera metadades del segment actiu si estan presents,
- executes startup read-back verification for active segment tails when
startup_verification_depth > 0. F:crates/recorder/src/engine.rs L154-L197 F:crates/recorder/src/engine.rs L372-L543
Comportament d’ingestió:
- càlcul del hash de contingut i del hash de cadena,
- injecció de signatura opcional,
- afegir a l’emmagatzematge,
- in-memory chain-head and envelope-count update. F:crates/recorder/src/engine.rs L376-L436
Auto-Sellar i Segellat de Segment
La configuració admet None, AfterCount, AfterDuration i Combined. Els llindars de valor zero són rebutjats durant la validació. recorder_id ha de satisfer les mateixes restriccions de forma d’identitat que s’utilitzen pels identificadors d’actors en temps d’execució, de manera que els IDs no vàlids fallen tancats en l’inici en comptes de més tard en els fluxos de segment/sellat. F:crates/recorder/src/config.rs L36-L85 F:crates/recorder/src/config.rs L117-L165
Flux de segellat:
- el segell afegeix
system.segment.sealedcom a sobre final, - persisteix
SealRecord, - marks segment sealed and clears active state. F:crates/recorder/src/engine.rs L438-L503
L’avaluació d’auto-segellat s’invoca després de cada append d’envolupament de dades amb èxit. F:crates/recorder/src/engine.rs L505-L565
Adaptador de límit
LocalRecorderAdapter envolta RecorderEngine en tokio::sync::Mutex per satisfer els requisits del trait compartit Send + Sync mentre es preserva l’accés exclusiu mutable en temps d’execució. F:crates/recorder/src/local_adapter.rs L20-L24
emit_envelope i emit_with_attachments ambdós criden a la validació explícita de fallada tancada abans de la delegació del gravador. F:crates/recorder/src/local_adapter.rs L120-L165 F:crates/recorder/src/validation.rs L46-L83
Bundle Builder Pipeline
BundleBuilder::build pipeline:
- resoldre selector,
- agrupar sobres per segment de manera determinista,
- construir metadades d’inclusió per segment,
- calcular pares omesos i tancament d’adjunció,
- assembleu el manifest de verificació.
F:crates/recorder/src/bundle_builder.rs L17-L35 F:crates/recorder/src/bundle_builder.rs L129-L172
L’algebra de selectors inclou selectors de segment/temps/filter/ID i unions compostes amb deduplicació determinista a través de BTreeMap. F:crates/recorder/src/bundle_builder.rs L415-L479
Els segments parcials utilitzen ancoratges de prova (chain_hash immediatament abans del primer sobre inclòs) per a la verificació de continuïtat. F:crates/recorder/src/bundle_builder.rs L255-L290
7-Fases Verificador
Verifier::verify executa comprovacions de paquet en memòria en aquest ordre:
- format de manifest/hash-algorithm i comprovacions d’integritat estructural,
- integritat del hash d’adjunt,
- hash del contingut de l’enviament i presència d’adjunt,
- continuïtat de la cadena per segment,
- vinculació de predecessors entre segments,
- verificació de signatures amb arrel de confiança opcional + política de confiança,
- assemblea de veredicte.
Abans de l’execució de la fase, el verificador aplica una política de treball limitat i falla tancat si es superen els límits (segments, sobres per segment, sobres totals, adjunts totals i referències d’adjunt per sobre).
F:crates/recorder/src/verifier.rs L13-L26 F:crates/recorder/src/verifier.rs L95-L136 F:crates/recorder/src/verifier.rs L500-L651
Totes les comparacions de hash utilitzen igualtat en temps constant. F:crates/recorder/src/verifier.rs L29-L52
L’output del verificador també suporta la materialització de transcripcions deterministes per a l’ús de paquets d’auditoria. VerificationTranscript captura la versió de l’esquema, metadades del paquet, metadades opcionals de la confiança, càrrega completa del veredicte i comptadors de resum deterministes. F:crates/recorder/src/verification_transcript.rs F:crates/recorder/src/verifier.rs
Proveïdor d’Evidències Límits
RecorderEvidenceProvider implementa el trait EvidenceProvider delegant a emmagatzemar consultes, construir paquets i verificar. F:crates/recorder/src/evidence_provider.rs L48-L67
Mètodes:
list_bundlesenumerates sealed segments with stable IDs derived fromlist_bundlesenumera segments segellats amb IDs estables derivats dels IDs de segment i suporta la semàntica de cursor/límits,fetch_bundleresolves the requested bundle ID to a sealed segment and buildsfetch_bundleresol el bundle ID sol·licitat a un segment segellat i construeix ambBundleSelector::BySegment,verify_bundledelega a un verificador de 7 fases,query_envelopesdelega a les consultes de filtre de l’emmagatzematge d’envelopes.
Els controls de límits del proveïdor ara inclouen una normalització/rebuig explícit de límits de fallada tancada per a límits de sol·licitud i límits de materialització de segments-envolupants.
F:crates/recorder/src/evidence_provider.rs L123-L286
Estat de Dureça en Temps d’Execució
Recentment completat en temps d’execució:
- Verifier phase 6 now enforces trust-root key lookup, cryptographic signature La fase 6 del verificador ara imposa la cerca de la clau de confiança arrel, la validació de signatures criptogràfiques i les comprovacions de política de confiança quan es proporciona una arrel de confiança.
- Recorder startup now performs fail-closed read-back verification over the
El inici del gravador ara realitza una verificació de lectura de tancament de fallades sobre els darrers
Nsobres del segment actiu (startup_verification_depth). - Evidence provider now exposes stable bundle IDs and true fetch-by-ID El proveïdor d’evidències ara exposa ID de paquet estables i una veritable semàntica de recuperació per ID per a segments segellats.
- Verifier phase 1 now fail-closes on manifest structural tampering (segment La fase 1 del verificador ara tanca automàticament en cas de manipulació estructural del manifest (mismatch de metadades de segment i llista d’adjuncions).
- Recorder config validation now fail-closes malformed
recorder_idvalues La validació de la configuració del gravador ara tanca en fallada els valorsrecorder_idmalformats abans que es produeixi el comportament d’obertura/tancament en temps d’execució. - El verificador ara aplica límits de treball explícits i delimitats a la frontera de la biblioteca.
- Evidence provider now enforces bounded query/list/materialization limits and El proveïdor d’evidències ara aplica límits de consulta/llista/materialització delimitats i rebutja límits proporcionats pel cridant que són massa grans.
- System tests now cover manifest structural tamper, single-open-segment Les proves del sistema ara cobreixen la manipulació estructural del manifest, l’aplicació de segments d’obertura única i els camins de fallada tancats per corrupció de persistència de principi a fi.
- Verifier transcript export support is implemented through
Verifier::verify_with_transcriptper a l’emissió d’artefactes deterministes.
F:crates/recorder/src/verifier.rs L509-L651 F:crates/recorder/src/engine.rs L154-L197 F:crates/recorder/src/engine.rs L380-L543 F:crates/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
File per Fitxer Referència Creuada
| Àrea | Fitxer | Notes |
|---|---|---|
| Cicle de vida del motor | crates/recorder/src/engine.rs | Flux d’obertura/registre/tancament i progressió de la cadena. |
| Configuració d’execució | crates/recorder/src/config.rs | Invariants de configuració d’auto-tancament i inici. |
| Límit d’adaptador | crates/recorder/src/local_adapter.rs | Implementació d’adaptador en procés. |
| Validació d’entrada | crates/recorder/src/validation.rs | Comprovacions d’envelops no segellats amb fallada tancada. |
| Constructor de paquet | crates/recorder/src/bundle_builder.rs | Resolució de selectors i assemblatge determinista de paquets. |
| Verificador | crates/recorder/src/verifier.rs | Algorisme de verificació de 7 fases. |
| Proveïdor d’evidències | crates/recorder/src/evidence_provider.rs | Implementació de la interfície d’evidències del costat de tirada. |
| Model d’error | crates/recorder/src/error.rs | Taxonomia de fallades específica del gravador. |