Arquitectura de CLI de Grabadora y Flujos de Trabajo del Operador
Audience: Engineers extending CLI behavior and operators automating Recorder con salida de máquina.
Tabla de Contenidos
- Resumen Ejecutivo
- Superficie de Comando y Enrutamiento
- Modelo de Resolución en Tiempo de Ejecución
- Flujos de Trabajo Operativos
- Modelo de Salida y Localización
- Límites Duros de Entrada y Comportamiento de Cierre por Fallo
- Semántica del Código de Salida
- Referencia Cruzada Archivo por Archivo
Resumen Ejecutivo
recorder es el límite operativo para los flujos de trabajo locales de Recorder. Orquesta recorder y recorder-store con grupos de comandos explícitos y modo JSON determinista para la automatización.
F:crates/recorder-cli/src/main.rs F:crates/recorder-cli/src/main_cli_types.rs F:crates/recorder-cli/src/commands.rs L19-L29 F:crates/recorder-cli/src/support.rs L19-L23
Superficie de Comando y Enrutamiento
Grupos de comandos de nivel superior:
recorder(operaciones de segmento + sobre)recorder envelope record-with-attachments(ingestión consciente de adjuntos),recorder signer(ciclo de vida de rotación de clave de firma explícita),consulta(recuperación de sobre),bundle(construir/verificar/inspeccionar),config(verificaciones de configuración en tiempo de ejecución),contrato(artefacto de contrato generado generar/verificar),aseguramiento(profundidad de inicio, modo raíz de confianza y verificaciones de puerta OSS),decision-gate(ingestión de fixture a través del adaptador de producción),otel(ingesta de fixture de exportación JSON de OTel a través del adaptador de producción),doctor(diagnósticos de almacenamiento y de segmento activo).
F:crates/recorder-cli/src/main_cli_types.rs
La arquitectura de despacho utiliza enrutadores de subcomandos explícitos en lugar de coincidencias de manejadores implícitas, con implementaciones de comandos divididas por área de flujo de trabajo. F:crates/recorder-cli/src/main.rs F:crates/recorder-cli/src/commands.rs L19-L29
Modelo de Resolución en Tiempo de Ejecución
Los ajustes de tiempo de ejecución se resuelven con precedencia:
- flags de CLI,
- archivo de configuración opcional,
- valores predeterminados.
Importantes valores predeterminados:
store_path:recorder.dbrecorder_id:recorder-clischema_version: esquema actualauto_seal: ninguno a menos que se proporcione un conteo y/o duración explícitosquery.limit: predeterminado1000, máximo10000security_profile:seguro
Modelo de tiempo de ejecución del firmante:
- carga de firmante consciente del perfil (
secure,standard,dev), - predeterminado seguro que requiere material de clave PKCS#8 cifrado,
- opción explícita de optar por no recibir para texto plano/semilla de desarrollo en
dev, - metadatos de rotación persistidos (
store_meta) con verificaciones de consistencia.
F:crates/recorder-cli/src/main.rs F:crates/recorder-cli/src/main_cli_types.rs F:crates/recorder-cli/src/support/runtime.rs L20-L122 F:crates/recorder-cli/src/support/runtime.rs L247-L556
Selección de backend de almacenamiento:
- file-backed SQLite or in-memory SQLite. F:crates/recorder-cli/src/support/runtime.rs L124-L179
Flujos de Trabajo Operativos
Los flujos de trabajo representativos se mapean directamente a los controladores de comandos:
- ciclo de vida del segmento de abrir/grabar/sellar/estado/lista,
- registrar sobres con archivo adjunto y entradas en base64 en línea (
record-with-attachments), - explicit key rotation (
recorder signer rotate) with deterministic rotación de clave explícita (recorder signer rotate) con emisión de evidenciasystem.adapter.key_rotateddeterminista, - consultas de sobre envolvente filtradas con soporte de cursor,
- construir el paquete a partir del JSON del selector, verificar (opcionalmente con la raíz de confianza) e inspeccionar,
- generación/verificación de proyección de contrato (
contract generate|check), - comprobaciones de implementación de garantía (
assurance startup|trust-root|gates), - Ingesta de transcripción/fixture de runpack de Decision Gate a través del adaptador de producción.
- Ingesta de fixture de exportación JSON de OTel a través del adaptador de producción.
F:crates/recorder-cli/src/commands/recorder.rs L20-L524 F:crates/recorder-cli/src/commands/query.rs L20-L88 F:crates/recorder-cli/src/commands/bundle.rs L20-L170 F:crates/recorder-cli/src/commands/admin.rs L20-L194
Las pruebas de integración cubren flujos de trabajo básicos y casos de fallo cerrado. F:crates/recorder-cli/tests/commands.rs F:crates/recorder-cli/tests/commands/core.rs F:crates/recorder-cli/tests/commands/query_and_rotation.rs F:crates/recorder-cli/tests/commands/attachments_and_dg.rs
Modelo de Salida y Localización
Modos de salida:
--json: cargas útiles estructuradas deterministas para automatización,- modo de texto: mensajería de operador localizada.
JSON-mode query contract ahora emite:
{"envelopes": [...], "next_cursor": ..., "applied_limit": ...}.
Las fallas en modo JSON emiten un sobre determinista:
{"error": "<mensaje>"}.
Resolución de locales:
--langanulaRECORDER_LANG,- supported locales are generated from catalog files under
crates/recorder-cli/i18n/locales/*.toml, - los valores de localidad desconocidos fallan cerrados con una salida diferente de cero,
- la configuración regional predeterminada permanece
ensolo cuando la configuración regional no está especificada.
Garantías de integridad de localización:
- build-time catalog validation enforces locale-tag uniqueness, default-locale
presence, exact key parity against
en, and exact placeholder-set parity for cada clave en todos los locales, - message templates are generated into typed keys/macros and translation table
código (
OUT_DIR/i18n_generated.rs), - runtime translation paths are strict and fail closed on unknown keys, desajuste de conjunto de marcadores de posición, o marcadores de posición no resueltos,
- no existe un retroceso silencioso a las ID de clave o al inglés para traducciones faltantes,
- locale provenance metadata is mandatory (
machineorhuman_reviewed) and las máquinas locales emiten un aviso de exención de responsabilidad en tiempo de ejecución explícito, - JSON output payload contracts remain locale-neutral and stable across locale selección.
La cobertura de locales incluye:
recorderbinario principal,recorder_oss_assurance_checks,recorder_oss_assurance_packet.
F:crates/recorder-cli/src/main.rs F:crates/recorder-cli/build.rs F:crates/recorder-cli/i18n/locales/en.toml F:crates/recorder-cli/i18n/locales/ca.toml F:crates/recorder-cli/src/i18n.rs F:crates/recorder-cli/src/support/util.rs F:crates/recorder-cli/src/bin/recorder_oss_assurance_checks.rs F:crates/recorder-cli/src/bin/recorder_oss_assurance_packet.rs F:crates/recorder-cli/tests/i18n_compile_fail.rs F:crates/recorder-cli/tests/commands/core.rs
Límites Duros de Entrada y Comportamiento de Cierre por Fallo
CLI impone lecturas de archivos limitadas:
- config: 1 MiB,
- payload JSON: 4 MiB,
- archivo adjunto/payload en línea: 16 MiB,
- JSON del dispositivo Decision Gate: 8 MiB,
- JSON de accesorio OTel: 16 MiB,
- selector JSON: 1 MiB,
- paquete JSON: 32 MiB,
- trust-root JSON: 1 MiB,
- archivo de clave del firmante: 64 KiB,
- material de frase de paso del firmante: 1 KiB.
F:crates/recorder-cli/src/main.rs
Las entradas sobredimensionadas son rechazadas antes de la análisis/procesamiento. F:crates/recorder-cli/src/support/util.rs L225-L277
bundle verify puede cargar una raíz de confianza explícita, dirigirla a Verifier::with_trust_root, y opcionalmente exportar un JSON de transcripción de verificador determinista a través de --verdict-transcript-output. F:crates/recorder/src/verification_transcript.rs F:crates/recorder-cli/src/commands/bundle.rs L74-L116
assurance grupo de comandos proporciona verificaciones explícitas de suposiciones OSS:
assurance startupexecutes runtime bootstrap and startup-verification path verificaciones con afirmaciones de profundidad mínima opcionales,assurance trust-rootvalida las suposiciones de análisis/política/conjunto de claves de trust-root,assurance gatesexecutescontract checkgate semantics directly. F:crates/recorder-cli/src/commands/assurance.rs
La cobertura de la prueba del sistema ahora valida:
- rechazo de entrada de config/selector/bundle/trust-root sobredimensionado,
- rechazo de entrada de clave/frase de paso de firmante sobredimensionada,
- comportamiento de fallo cerrado de identificador malformado sin mutación del grabador,
- validación de paridad de forma de recorder-id en modo JSON
config validate, - duración del auto-sello y comportamiento combinado del ciclo de vida a través de flujos de trabajo CLI reales,
record-with-attachmentssuccess roundtrip and hostile-input fail-closedrecord-with-attachmentscomportamiento de éxito en el viaje de ida y vuelta y fallo cerrado con entrada hostil sin mutación del grabador,- query JSON pagination contract (
applied_limit+next_cursor) and consulta de paginación JSON del contrato (applied_limit+next_cursor) y guardrails de fallo cerrado por sobre límite, - Comportamiento de éxito y desajuste de fallo estricto de
ingest-fixtureen Decision Gate CLI, - Comportamiento de ingestión de eventos de tipo determinista y éxito de OTel CLI
ingest-fixture, - aplicación de políticas de archivo de firmante seguro (symlink + permisos),
- recuperación de rotación de firmantes y comportamiento de fallo cerrado de metadatos corruptos,
- rechazo de symlink de salida-root del contrato CLI,
- hostile bundle-verify parse-boundary rejection for invalid attachment content type. F:system-tests/tests/suites/operations/query.rs F:system-tests/tests/suites/operations/config.rs F:system-tests/tests/suites/operations/locale.rs F:system-tests/tests/suites/operations/contract.rs F:system-tests/tests/suites/recorder.rs L333-L678 F:system-tests/tests/suites/security.rs F:system-tests/tests/suites/security_limits.rs F:system-tests/tests/suites/security_signer.rs F:system-tests/tests/suites/security_contract_bundle.rs F:system-tests/tests/suites/integration_decision_gate.rs F:system-tests/tests/suites/integration_decision_gate_ingest.rs
Semántica del Código de Salida
- Los errores de comando generales devuelven el código de salida
1a través deemit_error. - JSON-mode command errors still return exit code
1with machine-parseable Los errores de comando en modo JSON aún devuelven el código de salida1con la carga útil{"error": ...}que puede ser analizada por máquina. bundle verifydevuelve el código de salida2cuando el estado del veredicto esInválido.
F:crates/recorder-cli/src/support/util.rs L343-L345 F:crates/recorder-cli/src/commands/bundle.rs L112-L114
Referencia Cruzada Archivo por Archivo
| Área | Archivo | Notas |
|---|---|---|
| Entrada y despacho de CLI | crates/recorder-cli/src/main.rs, crates/recorder-cli/src/main_cli_types.rs | Modelo Clap, flujo de localización/bootstrap, enrutamiento de despacho de nivel superior. |
| Manejadores de comandos | crates/recorder-cli/src/commands.rs | Agrega módulos manejadores de grupos de comandos. |
| Manejadores de grabadora | crates/recorder-cli/src/commands/recorder.rs | Operaciones de segmento/envuelto y lógica de rotación de firmantes. |
| Manejadores de consultas y paquetes | crates/recorder-cli/src/commands/query.rs, crates/recorder-cli/src/commands/bundle.rs | Filtros de consulta y flujos de trabajo de construcción/verificación/inspección de paquetes. |
| Manejadores de administración | crates/recorder-cli/src/commands/admin.rs | Validación de configuración, diagnósticos de doctor, comandos de contrato. |
| Manejadores de integración | crates/recorder-cli/src/commands/integration.rs | Flujos de trabajo de ingestión de Decision Gate y OTel fixture. |
| Ayudantes de tiempo de ejecución y utilidades | crates/recorder-cli/src/support.rs, crates/recorder-cli/src/support/runtime.rs, crates/recorder-cli/src/support/util.rs | Resolución en tiempo de ejecución, política de firmantes, análisis, E/S limitada, ayudantes de salida. |
| Catálogo y generación de i18n | crates/recorder-cli/build.rs, crates/recorder-cli/i18n/locales/en.toml, crates/recorder-cli/i18n/locales/ca.toml, crates/recorder-cli/src/i18n.rs | Catálogos de localización validados en la construcción, claves/macros tipadas, metadatos de procedencia y renderizado estricto sin retroceso. |
| Binarios auxiliares de OSS | crates/recorder-cli/src/bin/recorder_oss_assurance_checks.rs, crates/recorder-cli/src/bin/recorder_oss_assurance_packet.rs | Bootstrap de localización (--lang y RECORDER_LANG) y superficies de uso/error localizadas con cargas útiles JSON neutrales en cuanto a la localización. |
| Pruebas de integración de CLI | crates/recorder-cli/tests/commands.rs, crates/recorder-cli/tests/commands/helpers.rs, crates/recorder-cli/tests/commands/core.rs, crates/recorder-cli/tests/commands/query_and_rotation.rs, crates/recorder-cli/tests/commands/attachments_and_dg.rs | Cobertura de flujo de trabajo de extremo a extremo para la semántica de CLI. |
| Integración del generador de contratos | crates/recorder-contract/src/lib.rs | Autoridad de artefacto generado determinista consumido por comandos de contrato de CLI. |
| Suite de operaciones de prueba del sistema | system-tests/tests/suites/operations/mod.rs, system-tests/tests/suites/operations/query.rs, system-tests/tests/suites/operations/config.rs, system-tests/tests/suites/operations/locale.rs, system-tests/tests/suites/operations/contract.rs | Valida las comprobaciones de paridad de validación de configuración y el comportamiento de paginación/límite de consulta de contratos JSON. |
| Suite de grabadora de prueba del sistema | system-tests/tests/suites/recorder.rs | Valida el conteo/duración/vida útil combinada de auto-sello y el comportamiento de ida y vuelta de grabación de adjuntos. |
| Suite de seguridad de prueba del sistema | system-tests/tests/suites/security.rs, system-tests/tests/suites/security_support.rs, system-tests/tests/suites/security_limits.rs, system-tests/tests/suites/security_signer.rs, system-tests/tests/suites/security_contract_bundle.rs | Valida el comportamiento de límite de CLI cerrado en caso de fallo a través de límites, hostilidad de adjuntos, política de firmantes, recuperación de rotación, seguridad de ruta de contrato y entradas de paquete hostiles. |
| Suite de CLI de Decision Gate de prueba del sistema | system-tests/tests/suites/integration_decision_gate.rs, system-tests/tests/suites/integration_decision_gate_support.rs, system-tests/tests/suites/integration_decision_gate_contract_shape.rs, system-tests/tests/suites/integration_decision_gate_ingest.rs | Valida el éxito de la ingestión de fixture de adaptador de producción de CLI y el comportamiento de desajuste de fallo estricto. |
| Crate de adaptador OTel | crates/recorder-otel-adapter/src/lib.rs | Implementación de mapeo de ingestión JSON de OTel de producción consumida por el comando de integración de CLI. |