Documentos del Grabador

Documentación de grabación de pruebas y evidencia a prueba de manipulaciones.

Otros documentos del producto

Arquitectura del Sidecar del Grabador

Audience: Engineers implementing or operating recorder-sidecar as the límite del servicio de grabación de evidencia accesible a través de la red.


Tabla de Contenidos

  1. Resumen Ejecutivo
  2. Composición en Tiempo de Ejecución
  3. HTTP Superficie y Enrutamiento
  4. Controles de Seguridad y Recursos
  5. Idempotencia y Seguridad de Reintentos
  6. Transporte y Ciclo de Vida
  7. Empaque de Contenedores y Operaciones de Docker
  8. Validación y Cobertura de Pruebas
  9. Referencia Cruzada Archivo por Archivo

Resumen Ejecutivo

recorder-sidecar es el servicio de tiempo de ejecución HTTP/JSON del Recorder que expone flujos de trabajo de grabación, consulta y paquete a través de sockets Unix y/o oyentes TCP.

El sidecar compone RecorderEngine, BundleBuilder, Verifier, y una única instancia de SqliteStore bajo puertas de middleware explícitas para identidad de correlación, autenticación, identidad/política empresarial, aplicación de límites y control de tiempo de espera. La ingestión de sobres mutantes ahora fluye a través de una cola limitada y un tiempo de ejecución de escritor autoritativo único.

F:crates/recorder-sidecar/src/server.rs L42-L133 F:crates/recorder-sidecar/src/state.rs L29-L56 F:crates/recorder-sidecar-config/src/config.rs


Composición en Tiempo de Ejecución

Flujo de inicio:

  1. Load and validate TOML config (config_version, api.major_version, Cargar y validar la configuración TOML (config_version, api.major_version, recorder, transport, security, signer y limits).
  2. Inicializar el seguimiento y abrir SqliteStore.
  3. Construir componentes de tiempo de ejecución del grabador.
  4. Inicializar el gateway de ingestión limitado + tarea de tiempo de ejecución de escritor dedicado.
  5. Construir el enrutador axum con la pila de middleware.
  6. Vincular los oyentes de transporte configurados y servir hasta la cancelación.

F:crates/recorder-sidecar-config/src/config.rs F:crates/recorder-sidecar-config/src/validation.rs F:crates/recorder-sidecar/src/server.rs L43-L247 F:crates/recorder-sidecar/src/ingest.rs


HTTP Superficie y Enrutamiento

El enrutador actualmente expone:

  • Sondeos: GET /health, GET /startup, GET /ready
  • Observabilidad de segmentos: GET /v1/segments, GET /v1/segments/active
  • Envelope ingest: POST /v1/envelopes, Ingesta de sobres: POST /v1/envelopes, POST /v1/envelopes/with-attachments
  • Consulta: POST /v1/query/envelopes
  • Bundle workflows: POST /v1/bundles/build, POST /v1/bundles/verify, Agrupar flujos de trabajo: POST /v1/bundles/build, POST /v1/bundles/verify, POST /v1/bundles/inspect
  • Ingesta de compatibilidad: POST /v1/ingest/otel (exportación OTel JSON v1)
  • Inspección en tiempo de ejecución: GET /v1/config

F:crates/recorder-sidecar/src/server.rs L135-L160 F:crates/recorder-sidecar/src/handlers/otel.rs

Notas del contrato de observabilidad de segmentos:

  • GET /v1/segments/active now returns the same paginated list shape as GET /v1/segments (no es un recurso singleton), filtrado a status=open.
  • Segment response objects now include stream identity (stream_key.tenant_id, stream_key.recorder_id) to make per-stream roll estado explícito en el límite de la API.

F:crates/recorder-sidecar/src/handlers/segment.rs

Destacados del contrato de solicitud de mutación:

  • Idempotency-Key es requerido para los endpoints de mutación.
  • Las rutas de sobre requieren tenant_id y recorder_id en los cuerpos de las solicitudes.
  • recorder_id debe coincidir con la identidad del grabador de sidecar configurado.
  • In enterprise-enabled modes, mutating envelope routes require x-tenant-id enlace de encabezado/cuerpo.

Comportamiento de salud:

  • GET /health es una verificación de disponibilidad ligera que devuelve metadatos del proceso.
  • GET /startup is a startup-completion probe returning startup metadata, GET /startup es una sonda de finalización de inicio que devuelve metadatos de inicio, incluyendo la startup_verification_depth configurada.
  • GET /ready returns readiness state with dependency-aware fail-closed semantics:
    • 503 con razón=storage_unavailable cuando falla el acceso a la tienda.
    • Optional 503 with reason=request_capacity_exhausted when probes.ready_fail_on_admission_saturation=true and admission/execution los semáforos están agotados.
    • Optional 503 with reason=enterprise_control_unavailable when probes.readiness_mode=storage_and_enterprise, enterprise mode is enabled, Opcional 503 con reason=enterprise_control_unavailable cuando probes.readiness_mode=storage_and_enterprise, el modo empresarial está habilitado y las comprobaciones de disponibilidad del plano de control fallan.
    • 200 con ready=true en estado estable.

F:crates/recorder-sidecar/src/handlers/health.rs L42-L94


Controles de Seguridad y Recursos

Config Gate

La validación de la configuración es de cierre seguro y aplica:

  • esquema estricto y versionado de API,
  • validez del ID del grabador y del auto-sello,
  • restricciones de host/puerto de transporte,
  • non-loopback transport requires security.mode=token and keeps el transporte no de bucle requiere security.mode=token y mantiene require_token_for_non_loopback=true (cerrado por defecto),
  • token file hardening (security.token_file cannot be a symlink, must be a endurecimiento del archivo de token (security.token_file no puede ser un enlace simbólico, debe ser un archivo regular y en Unix no debe otorgar permisos de grupo/otros),
  • Secret token paths are opened with descriptor-bound hardening (O_NOFOLLOW on Unix, FILE_FLAG_OPEN_REPARSE_POINT on Windows) and validado en manejadores abiertos para cerrar carreras de verificación/uso,
  • bounded hostile file reads (sidecar config <= 1 MiB, token/control-plane archivos de token <= 4096 bytes, archivo de clave del firmante <= 65536 bytes),
  • analizabilidad de la clave del firmante,
  • límites numéricos de idempotencia en la solicitud/cabecera y verificaciones de límite máximo,
  • probe config fail-closed semantics: probes.enterprise_health_path must be absolute/safe and probes.readiness_mode=storage_and_enterprise requires enterprise mode not deshabilitado.

F:crates/recorder-sidecar-config/src/config.rs F:crates/recorder-sidecar-config/src/validation.rs

Middleware Stack

Orden y controles del middleware:

  1. Capa de límite del cuerpo de la solicitud (max_request_body_bytes).
  2. Capa de trazado.
  3. Correlation middleware (server correlation IDs, sanitized client Middleware de correlación (IDs de correlación del servidor, x-correlation-id sanitizado, compatibilidad con x-request-id heredado).
  4. Auth middleware (Bearer token mode with constant-time compare and RFC 6750 Middleware de autenticación (Bearer token en modo con comparación en tiempo constante y metadatos de desafío RFC 6750 en respuestas 401).
  5. Enterprise identity middleware (x-tenant-id, x-principal-id, x-authn-method, optional x-namespace-id, optional writer lease assertion) para modos habilitados para empresas.
  6. Enterprise policy middleware (control-plane ingress checks for protected routes plus sidecar boundary hook emission at admission and result fases).
  7. Bounds middleware (header bytes, content negotiation, content-length checks, Middleware de límites (bytes de encabezado, negociación de contenido, verificaciones de longitud de contenido, cola de admisión limitada, concurrencia activa limitada, tiempo de espera de solicitud).

Comportamiento de prioridad de sondeo:

  • /health, /startup, and /ready are exempted from auth, enterprise policy, and bounds gating so liveness/startup/readiness state remains observable under sobrecarga o fallos de política.

F:crates/recorder-sidecar/src/server.rs L155-L160 F:crates/recorder-sidecar/src/middleware/request_id.rs L15-L30 F:crates/recorder-sidecar/src/middleware/auth.rs L21-L84 F:crates/recorder-sidecar/src/control_plane_bridge.rs F:crates/recorder-sidecar/src/middleware/enterprise.rs F:crates/recorder-sidecar/src/middleware/bounds.rs L21-L172 F:crates/recorder-sidecar-config/src/media_types.rs

Política estricta de tipo de medio fuente:

  • request-body routes use a centralized allowlist from recorder-sidecar-config::políticas_de_tipo_de_medio_de_solicitud_de_sidecar,
  • Content-Type parsing is strict fail-closed (application/json with opcional charset=utf-8 solamente),
  • Accept el análisis es estricto y falla cerrado (application/json o */* solamente),
  • generated sidecar OpenAPI/compat artifacts and CI gates consume the same política de tipo de medio fuente para prevenir la desviación de tiempo de ejecución/contrato.

Controles de Límite Empresarial

Cuando enterprise.mode está habilitado, el sidecar añade un control explícito de la aplicación de límites del plano de control mientras preserva la semántica del grabador/evidencia:

  • crates/recorder-sidecar/src/control_plane_bridge.rs is a boundary adapter only. It translates sidecar ingress identities/operations into control-plane admisión y llamadas de gancho; no implementa ni altera la matemática de evidencia del Grabador.

  • Enterprise config is fail-closed: enabled mode requires token security mode, La configuración empresarial es de cierre en caso de fallo: el modo habilitado requiere el modo de seguridad de token, la configuración de URL/token del plano de control y verificaciones de archivos de token endurecidos.

  • Enterprise policy gate calls Llamadas de puerta de política empresarial POST /v1/enterprise/ingress/check antes de las operaciones de sidecar protegidas.

  • Sidecar ingress operation vocabulary exported to enterprise control-plane is restricted to active v1 routes: recorder.record_envelope, recorder.record_envelope_with_attachments, recorder.ingest_otel, recorder.query_envelopes, recorder.build_bundle, recorder.verify_bundle, and recorder.inspect_bundle. Las rutas de segmentos mutantes eliminadas no están incluidas en este vocabulario.

  • Managed-cloud mode enforces writer-lease assertion for mutating operations El modo de nube gestionada impone la afirmación de arrendamiento de escritor para operaciones mutantes cuando require_writer_lease_header=true.

  • Sidecar emits deterministic enterprise boundary hooks to POST /v1/enterprise/sidecar/hooks at:

    • admisión (permitir/negar/error antes de la ejecución del controlador),
    • resultado (permitir/negar/error después del estado de respuesta del controlador).
  • Hook emission is fail-closed for successful protected operations: if enterprise hook export fails, the sidecar returns an error instead of silently accepting un camino de éxito no auditado.

  • Enterprise readiness dependency checks use probes.enterprise_health_path (default /health) against the configured enterprise control-plane base URL when Las comprobaciones de dependencia de preparación empresarial utilizan probes.enterprise_health_path (por defecto /health) contra la URL base del plano de control empresarial configurada cuando probes.readiness_mode=storage_and_enterprise.

F:crates/recorder-sidecar-config/src/validation.rs F:crates/recorder-sidecar/src/control_plane_bridge.rs F:crates/recorder-sidecar/src/middleware/enterprise.rs

Error de Contrato

Los errores se devuelven como Detalles del Problema RFC 9457 (application/problem+json) con códigos de error estables, metadatos de reintento y campos de correlación entre servidor y cliente.

Detalles de la postura de seguridad:

  • malformed JSON rejections are normalized to typed bad_request problem details los rechazos de JSON malformado se normalizan a un problema de tipo bad_request detalles en lugar de filtrar fallos del extractor de marco/texto plano,
  • server-side (5xx) responses suppress internal detail fields to avoid leaking storage/runtime internals while preserving diagnostics in service registros,
  • 401 unauthorized las respuestas incluyen desafíos WWW-Authenticate de la RFC 6750.

F:crates/recorder-sidecar/src/error.rs L13-L229 F:crates/recorder-sidecar/src/extract.rs


Idempotencia y Seguridad de Reintentos

POST /v1/envelopes y POST /v1/envelopes/with-attachments ahora envían comandos normalizados a una cola en memoria limitada (IngestGateway) y son procesados por un entorno de ejecución de escritor único dedicado (IngestWriterRuntime).

La idempotencia de propiedad del escritor se persiste en idempotency_entries, delimitada por: (stream_tenant_id, stream_recorder_id, endpoint, idempotency_key) más el hash de solicitud canónica.

Comportamiento del escritor de ruta caliente:

  • los controladores mutantes encolan solo comandos normalizados,
  • writer-native sealing computes deterministic attachment refs, content hash, cadena hash, secuencia de flujo y recibos,
  • one SQLite transaction per micro-batch persists envelopes, projection rows, entradas de idempotencia, estado de flujo y transiciones de segmento de manera atómica.
  • stream state load/create is performed once per stream per transaction so segment roll paths cannot open orphan zero-envelope segments before stream persistencia del puntero; esto preserva la invariante de reinicio de segmento único abierto.

Comportamiento:

  • misma clave + mismo hash: repetir recibo durable previo (idempotency_outcome=replayed),
  • misma clave + hash diferente: 409 idempotency_conflict,
  • saturación de la cola: fail-fast 429 too_many_requests,
  • fallo de almacenamiento: fail-closed idempotency_unavailable / storage_unavailable.

La retención está limitada por ingest.idempotency_ttl_seconds y ingest.idempotency_max_entries_per_stream. La limpieza de retención del escritor se aplica en dos fases dentro de la misma transacción:

  1. limpieza de caducidad por expires_at_unix,
  2. overflow cleanup by ordered offset delete over created_at_unix DESC. This path relies on SQLite stream-scope ordering index idx_idempotency_stream_created(stream_tenant_id, stream_recorder_id, created_at_unix DESC) para evitar picos de latencia de recorte inducidos por la profundidad de la historia.

F:crates/recorder-sidecar/src/ingest.rs F:crates/recorder-sidecar/src/handlers/envelope.rs

Ruta de compatibilidad de ingestión de OTel:

  • POST /v1/ingest/otel ingests OTel JSON export payloads through recorder-otel-adapter with deterministic mapping and strict-fail record validación.
  • Route behavior is additive under /v1, requires Idempotency-Key, and reutiliza controles de autenticación/empresa/límites/tiempo de espera/correlación de sidecar.
  • La respuesta en tiempo de ejecución incluye la versión de mapeo y los conteos de ingestión deterministas.

F:crates/recorder-otel-adapter/src/adapter.rs


Transporte y Ciclo de Vida

Modos de transporte:

  • Socket de dominio Unix,
  • Escuchador TCP,
  • ambos simultáneamente.

Ciclo de vida en tiempo de ejecución:

  • limpieza de sockets Unix obsoletos antes de la vinculación (fallo cerrado validado por tipo de socket),
  • token de cancelación impulsado por señales,
  • cierre elegante por oyente con un tiempo de espera shutdown_drain_seconds impuesto,
  • Eliminación del socket de Unix en la ruta de apagado.

F:crates/recorder-sidecar/src/server.rs L163-L262 F:crates/recorder-sidecar/src/shutdown.rs L8-L34

Superficie de comando operativo en binario:

  • inicio de servicio normal con --config / RECORDER_SIDECAR_CONFIG,
  • healthcheck comando que soporta modos de sondeo TCP URL y Unix-socket.

F:crates/recorder-sidecar/src/main.rs L18-L175


Empaque de Contenedores y Operaciones de Docker

El repositorio ahora incluye un perfil de contenedor sidecar de primera parte en docker/sidecar/:

  • Dockerfile: construcción de Rust de múltiples etapas para una imagen de tiempo de ejecución sin raíz y sin distribución.
  • docker-compose.yml: local operator profile with explicit UID/GID mapping, bind-mounted config/data/run paths, tmpfs-backed token target path, Docker ruta de fuente secreta, verificación de salud y mapeo de puerto limitado.
  • config/sidecar.toml: container-oriented baseline config with token-mode config/sidecar.toml: configuración base orientada a contenedores con autenticación en modo token requerida para transporte no de bucle invertido.
  • .env.example: canonical environment variable contract for image/tag/paths y mapeo de fuente de UID/GID + token-secreto.

Contrato de operador:

  • supply token material through a Docker secret source file (RECORDER_SIDECAR_TOKEN_SECRET_FILE),
  • bootstrap writes token material to /work/secrets/token in tmpfs with permisos solo para el propietario (0600 en Unix) antes del inicio del sidecar,
  • run non-root with host UID/GID mapping so strict token checks remain readable ejecutar sin privilegios de root con mapeo de UID/GID del host para que las verificaciones de token estrictas sigan siendo legibles mientras se evita la ejecución como root,
  • treat docker/sidecar/secrets/token as secret material and keep it out of VCS.

F:docker/sidecar/Dockerfile F:docker/sidecar/docker-compose.yml F:docker/sidecar/config/sidecar.toml F:docker/sidecar/README.md


Validación y Cobertura de Pruebas

La pila de validación de sidecar actual incluye:

  • config fail-closed validation assertions (port, header hard cap, validar las afirmaciones de cierre de configuración (puerto, límite duro de encabezado, límites de auto-sellado),
  • comportamiento del middleware de límites de longitud de contenido,
  • comportamiento de sanitización del correlation-id,
  • comprobaciones de determinismo del hash de solicitud idempotente canónica.
  • generated error-registry compatibility assertions (Docs/generated/recorder/apis/sidecar.errors.json vs línea base de tiempo de ejecución).
  • restart-boundary idempotency replay/conflict integration checks over real reinicio de la idempotencia de límites, verificación de integración de reproducción/conflicto sobre el subprocess de sidecar real + persistencia en SQLite.
  • parallel rolled-load restart correctness test coverage asserting exactly one segmento abierto persistente y reinicio exitoso después de la carga.
  • contract hardening checks for RFC 9457 payload shape, RFC 6750 auth challenge verificaciones de endurecimiento de contrato para la forma de carga útil del RFC 9457, encabezados de desafío de autenticación del RFC 6750 y propagación de encabezados de correlación.
  • strict media-type matrix checks for content-type/accept fail-closed behavior con códigos de error unsupported_media_type y not_acceptable estables.
  • probe hardening checks for unauthenticated probe routes and startup probe comprobaciones de endurecimiento de sondas para rutas de sondas no autenticadas y contrato de respuesta de la sonda de inicio.
  • readiness hardening checks for admission saturation fail-closed behavior and verificaciones de endurecimiento de preparación para el comportamiento de fallo cerrado por saturación de admisión y transiciones de modo de dependencia del plano de control empresarial.
  • enterprise outage mutation checks proving write paths fail closed with servicio-no-disponible cuando la dependencia de ingreso del plano de control está caída.
  • generated sidecar contract compatibility gates (openapi/errors/enums/examples/compat) puertas de compatibilidad del contrato de sidecar generadas (openapi/errors/enums/examples/compat) aplicadas en la orquestación de generate/check.
  • profile-matrix perf orchestration (RECORDER_PERF_MATRIX=1) that executes debug/test and release regression lanes, emits target/perf-matrix/latest.json, and applies release-gated threshold + regression policy using committed baseline contracts (system-tests/perf_baselines/*.json); capacity lane execution is optional (--include-capacity) y destinado a trabajos nocturnos/pre-lanzamientos fijados.
  • sidecar perf architecture split:
    • regression lane artifact: target/sidecar-perf/latest.json (lane=regression, señal de anti-regresión de carga de trabajo fija),
    • capacity lane artifact: target/sidecar-capacity/latest.json (lane=capacity, saturation sweep with max_sustainable_rps and knee métricas).
  • system-test sidecar suites for end-to-end HTTP record/query/build/verify and reinicio de la persistencia de idempotencia.
  • system-test Docker suite validating Dockerfile/Compose/config hardening plus Docker Compose build/up/down with containerized startup/readiness probes plus registro/consulta de flujo de trabajo.
  • system-test sidecar perf suite for write/read latency, throughput, memory growth, and overload-429 report fields used by the perf gate; throughput and latency lanes now use a persistent keep-alive HTTP client pool for production-representative write-path measurements. As of 2026-02-16, memory reporting distinguishes hot-path/high-water RSS growth from quiesced retained RSS growth and emits reclaim ratio context. As of the same date, durability characterization records live wal_size_bytes, post-stop wal_size_post_stop_bytes, and coupled wal_checkpoint_noop state per case, and emits an explicit comparability signal (durability_wal_ratio_vs_1000_comparable) antes de interpretar los ratios de WAL.
  • ignored informational retained-memory attribution lane (sidecar_perf_rss_retained_memory_attribution_characterization) emitting target/sidecar-perf/rss_attribution_latest.json with fixed-volume sequential/parallel quiesce-window checkpoints and smaps_rollup class deltas (Rss, Anónimo, Privado_Sucio, Compartido_Limpio, Compartido_Sucio).
  • ignored informational ingest-tuning characterization lane (sidecar_perf_rss_ingest_tuning_characterization) emitting target/sidecar-perf/rss_ingest_tuning_latest.json with ingest queue/batch matrix sweeps (queue_capacity, batch_max_commands, batch_max_bytes) across sequential and parallel workers, including data-derived decision fields para la clasificación de mecanismos y recomendación de mitigación.
  • ingest batching byte-estimation path now avoids per-command Vec<u8> allocation churn in writer_command_estimated_bytes by counting serialized Bytes JSON a través de serde_json::to_writer contra un sumidero de conteo.
  • system-test sidecar capacity suite for release-only concurrency sweep points (32..512), deterministic correctness sampling, and pinned-runner max_sustainable_rps/métrica de emisión de rodilla.

F:crates/recorder-sidecar-config/src/config/tests.rs F:crates/recorder-sidecar/tests/unit/middleware/bounds/tests.rs F:crates/recorder-sidecar/src/idempotency.rs F:crates/recorder-sidecar/tests/error_registry_contract.rs F:crates/recorder-sidecar/tests/idempotency_restart.rs F:crates/recorder-sidecar/tests/http_contract_hardening.rs F:crates/recorder-sidecar/tests/enterprise_control_plane_e2e.rs F:scripts/ci/sidecar_contract_gates.py F:scripts/ci/perf_matrix.py F:scripts/ci/perf_gate.py F:scripts/ci/perf_threshold_policy.py F:scripts/ci/generate_all.sh F:system-tests/tests/suites/sidecar.rs F:system-tests/tests/suites/sidecar_enterprise.rs F:system-tests/tests/suites/sidecar_docker.rs F:system-tests/tests/suites/sidecar_perf.rs F:system-tests/tests/suites/sidecar_capacity.rs F:system-tests/tests/helpers/perf_sidecar.rs


Referencia Cruzada Archivo por Archivo

ÁreaArchivoNotas
Límite de cratecrates/recorder-sidecar/src/lib.rsPuntos de entrada públicos del crate y composición de módulos.
Tiempo de ejecución binariocrates/recorder-sidecar/src/main.rsCLI, inicio del servicio y comportamiento de verificación de salud.
Binario de arranque de contenedorcrates/recorder-sidecar/src/bin/docker_bootstrap.rsIngesta de fuente de token cerrada por fallo y materialización de archivo de token endurecido en contenedor antes del inicio del sidecar.
Configuración + validacióncrates/recorder-sidecar-config/src/config.rs, crates/recorder-sidecar-config/src/validation.rs, crates/recorder-sidecar-config/src/schema.rs, crates/recorder-sidecar-config/src/compat.rsModelo de configuración canónica del sidecar, validación de inicio cerrada por fallo y artefactos de proyección de configuración determinista.
Política de tipo de mediocrates/recorder-sidecar-config/src/media_types.rsPolítica estricta de tipo de medio compartida para el comportamiento del analizador en tiempo de ejecución y artefactos de contrato del sidecar generados.
Arranque del servidorcrates/recorder-sidecar/src/server.rsAlmacenamiento/conexión en tiempo de ejecución, construcción de enrutador, ciclo de vida del transporte.
Estado compartidocrates/recorder-sidecar/src/state.rsManejadores en tiempo de ejecución y puertas de concurrencia.
Superficie de errorcrates/recorder-sidecar/src/error.rsModelo de error estructurado de la API.
Extractores JSONcrates/recorder-sidecar/src/extract.rsNormalización estricta de límites JSON para fallos de análisis tipados.
Línea base del contrato de tiempo de ejecucióncrates/recorder-sidecar/src/contract.rsVersión de API exportada y constantes del registro de errores utilizadas por las pruebas de contrato.
Ingesta de escritor únicocrates/recorder-sidecar/src/ingest.rsAdmisión de cola limitada, generación de recibos duraderos, secuenciación con alcance de flujo y estado de idempotencia persistente.
Puerta de política empresarialcrates/recorder-sidecar/src/control_plane_bridge.rsAdaptador de límite empresarial únicamente: comprobaciones de ingreso del plano de control y emisión de ganchos del sidecar.
Middleware de autenticacióncrates/recorder-sidecar/src/middleware/auth.rsComprobaciones de token portador con comparación en tiempo constante.
Middleware empresarialcrates/recorder-sidecar/src/middleware/enterprise.rsExtracción de identidad empresarial y aplicación de límites/secuenciación de ganchos.
Middleware de límitescrates/recorder-sidecar/src/middleware/bounds.rsControles de encabezado/contenido/cola/concurrencia/tiempo de espera.
Manejador de ingestión OTelcrates/recorder-sidecar/src/handlers/otel.rsRuta de ingestión JSON OTel, acoplamiento de idempotencia y invocación de adaptador.
Adaptador OTelcrates/recorder-otel-adapter/src/adapter.rsImplementación determinista de mapeo/redacción/límites OTel utilizada por el sidecar y flujos de trabajo de ingestión de CLI.
Empaquetado de Dockerdocker/sidecar/Dockerfile, docker/sidecar/docker-compose.yml, docker/sidecar/config/sidecar.toml, docker/sidecar/.env.example, docker/sidecar/README.mdPerfil de construcción/tiempo de ejecución de contenedor de primera parte y guía de uso del operador, incluyendo flujo de arranque de token de fuente secreta + tmpfs.
Módulos de prueba unitaria del sidecarcrates/recorder-sidecar-config/src/config/tests.rs, crates/recorder-sidecar/src/idempotency.rs, crates/recorder-sidecar/tests/unit/middleware/bounds/tests.rsLas pruebas unitarias se externalizan de los archivos fuente de producción para una organización de archivos más limpia.
Pruebas del sistema Docker del sidecarsystem-tests/tests/suites/sidecar_docker.rsEndurecimiento de Dockerfile/Compose y validación del flujo de trabajo del sidecar en contenedor.
Manejadores de sondeocrates/recorder-sidecar/src/handlers/health.rsComportamiento de vivacidad/inicio/listo, incluyendo modos de saturación y preparación de dependencia empresarial.
Pruebas de conformidad de contratocrates/recorder-sidecar/tests/error_registry_contract.rs, crates/recorder-sidecar/tests/idempotency_restart.rs, crates/recorder-sidecar/tests/http_contract_hardening.rsComprobaciones de registro, idempotencia de reinicio y endurecimiento de límites HTTP.
Pruebas de integración empresarialcrates/recorder-sidecar/tests/enterprise_control_plane_e2e.rsComprobaciones E2E de límites de admisión/resultados empresariales incluyendo comportamiento de mutación cerrada por fallo en la interrupción del plano de control.
Puertas CI de contratoscripts/ci/sidecar_contract_gates.py, scripts/ci/perf_matrix.py, scripts/ci/perf_gate.py, scripts/ci/perf_threshold_policy.py, scripts/ci/generate_all.shPuertas de contrato v1 que rompen antes del lanzamiento más la orquestación de rendimiento de matriz de perfil y gobernanza de umbral anti-sandbagging.
Pruebas del sistema del sidecarsystem-tests/tests/suites/sidecar.rs, system-tests/tests/suites/sidecar_enterprise.rs, system-tests/tests/suites/sidecar_perf.rs, system-tests/tests/suites/sidecar_capacity.rsCobertura de ciclo de vida HTTP de extremo a extremo, carriles de dependencia del plano de control cerrados por fallo empresarial y generación de informes de rendimiento de regresión/capacidad divididos para SLO y control de saturación.
Alineación de seguridadDocs/security/threat_model.mdMapeo de amenazas autoritativo y riesgos residuales.