Recorder Docs

Documentació de gravació de proves i evidències que mostren manipulació.

Altres documents de producte

Arquitectura del Sidecar del Recorder

Audience: Engineers implementing or operating recorder-sidecar as the servei d’enregistrament d’evidències accessible a la xarxa.


Taula de continguts

  1. Visió Executiva
  2. Composició en temps d’execució
  3. HTTP Superfície i Ruteig
  4. Controls de Seguretat i Recursos
  5. Idempotència i Seguretat de Reintents
  6. Transport i Cicle de Vida
  7. Envasament de contenidors i operacions de Docker
  8. Validació i Cobertura de Proves
  9. File per Fitxer Referència Creuada

Executive Overview

recorder-sidecar és el servei d’execució HTTP/JSON del Recorder que exposa els fluxos de treball de gravació, consulta i paquet a través de sockets Unix i/o oients TCP.

El sidecar compon RecorderEngine, BundleBuilder, Verifier, i una única instància de SqliteStore sota portes de middleware explícites per a la identitat de correlació, autenticació, identitat/política empresarial, aplicació de límits i control de temps d’espera. La ingesta d’envelopes mutables ara flueix a través d’una cua limitada i un temps d’execució d’escriptor autoritzat únic.

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ó en temps d’execució

Flux de startup:

  1. Load and validate TOML config (config_version, api.major_version, Carrega i valida la configuració TOML (config_version, api.major_version, recorder, transport, seguretat, signant i límits).
  2. Inicialitza el rastreig i obre SqliteStore.
  3. Construir components d’execució del gravador.
  4. Inicialitzar la passarel·la d’ingestió limitada + tasca d’execució de escriptura dedicada.
  5. Construir el router axum amb la pila de middleware.
  6. Vincula els listeners de transport configurats i serveix fins a la cancel·lació.

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 Superfície i Ruteig

El router actualment exposa:

  • Probes: GET /health, GET /startup, GET /ready
  • Observabilitat de segments: GET /v1/segments, GET /v1/segments/active
  • Envelope ingest: POST /v1/envelopes, Ingesta d’envelopes: POST /v1/envelopes, POST /v1/envelopes/with-attachments
  • Consulta: POST /v1/query/envelopes
  • Bundle workflows: POST /v1/bundles/build, POST /v1/bundles/verify, Agrupar fluxos de treball: POST /v1/bundles/build, POST /v1/bundles/verify, POST /v1/bundles/inspect
  • Compatibilitat ingest: POST /v1/ingest/otel (exportació JSON OTel v1)
  • Inspecció en temps d’execució: GET /v1/config

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

Notes del contracte d’observabilitat del segment:

  • GET /v1/segments/active now returns the same paginated list shape as GET /v1/segments (no és un recurs singleton), filtrat a status=open.
  • Segment response objects now include stream identity (stream_key.tenant_id, stream_key.recorder_id) to make per-stream roll estat explícit a la frontera de l’API.

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

Destacats del contracte de sol·licitud de mutació:

  • Idempotency-Key és necessari per als punts finals de mutació.
  • Les rutes d’envelop requerixen tenant_id i recorder_id en els cossos de les sol·licituds.
  • recorder_id ha de coincidir amb la identitat del gravador de sidecar configurat.
  • In enterprise-enabled modes, mutating envelope routes require x-tenant-id vinculació d’encapçalament/cos.

Comportament de salut:

  • GET /health és una prova de vivència lleugera que retorna metadades del procés.
  • GET /startup is a startup-completion probe returning startup metadata, GET /startup és una sonda de completament d’inici que retorna metadades d’inici, incloent startup_verification_depth configurat.
  • GET /ready returns readiness state with dependency-aware fail-closed semantics:
    • 503 amb raó=storage_unavailable quan falla l’accés a la botiga.
    • Optional 503 with reason=request_capacity_exhausted when probes.ready_fail_on_admission_saturation=true and admission/execution Opcional 503 amb reason=request_capacity_exhausted quan probes.ready_fail_on_admission_saturation=true i els semàfors d’admissió/execució estan esgotats.
    • Optional 503 with reason=enterprise_control_unavailable when probes.readiness_mode=storage_and_enterprise, enterprise mode is enabled, Opcional 503 amb reason=enterprise_control_unavailable quan probes.readiness_mode=storage_and_enterprise, el mode d’empresa està habilitat, i les comprovacions de disponibilitat del pla de control fallen.
    • 200 amb ready=true en estat estable.

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


Controls de Seguretat i Recursos

Config Gate

La validació de la configuració és fail-closed i imposa:

  • esquema estricte i versionat de l’API,
  • ID del gravador i validesa de l’auto-segell,
  • restriccions d’host/port de transport,
  • non-loopback transport requires security.mode=token and keeps el transport no de loopback requereix security.mode=token i manté require_token_for_non_loopback=true (tancat per defecte),
  • token file hardening (security.token_file cannot be a symlink, must be a enduriment del fitxer de token (security.token_file no pot ser un enllaç simbòlic, ha de ser un fitxer normal, i a Unix no ha de concedir permisos de grup/altres),
  • Secret token paths are opened with descriptor-bound hardening (O_NOFOLLOW on Unix, FILE_FLAG_OPEN_REPARSE_POINT on Windows) and validat en manetes obertes per tancar comprovacions/curses d’ús,
  • bounded hostile file reads (sidecar config <= 1 MiB, token/control-plane fitxers de token <= 4096 bytes, fitxer de clau de signatura <= 65536 bytes),
  • parseabilitat de la clau del signant,
  • sol·licitud/capçalera/límits numèrics d’idempotència i comprovacions de límits màxims,
  • probe config fail-closed semantics: probes.enterprise_health_path must be absolute/safe and probes.readiness_mode=storage_and_enterprise requires enterprise mode not desactivat.

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

Middleware Stack

Ordre i controls del middleware:

  1. Límit del cos de la sol·licitud (max_request_body_bytes).
  2. Capa de traçabilitat.
  3. Correlation middleware (server correlation IDs, sanitized client Middleware de correlació (IDs de correlació del servidor, client x-correlation-id sanititzat, compatibilitat amb x-request-id llegat).
  4. Auth middleware (Bearer token mode with constant-time compare and RFC 6750 Middleware d’autenticació (mode de token Bearer amb comparació en temps constant i metadades de repte RFC 6750 en respostes 401).
  5. Enterprise identity middleware (x-tenant-id, x-principal-id, x-authn-method, optional x-namespace-id, optional writer lease assertion) per a modes habilitats per a empreses.
  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ímits (bytes d’encapçalament, negociació de contingut, comprovacions de longitud de contingut, cua d’admissió limitada, concurrència activa limitada, temps d’espera de la sol·licitud).

Comportament de prioritat de la sonda:

  • /health, /startup, and /ready are exempted from auth, enterprise policy, and bounds gating so liveness/startup/readiness state remains observable under sobrecàrrega o fracassos 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 tipus de mitjà font:

  • request-body routes use a centralized allowlist from recorder-sidecar-config::sidecar_request_media_type_policies,
  • Content-Type parsing is strict fail-closed (application/json with opcional charset=utf-8 només),
  • Accept el processament és estricte i tanca en fallada (application/json o */* només),
  • generated sidecar OpenAPI/compat artifacts and CI gates consume the same font de política de tipus de mitjans per prevenir el desplaçament de temps d’execució/contracte.

Controls de límits d’empresa

Quan enterprise.mode està habilitat, el sidecar afegeix un control explícit de l’aplicació de límits del pla de control mentre preserva la semàntica del gravador/prova:

  • crates/recorder-sidecar/src/control_plane_bridge.rs is a boundary adapter only. It translates sidecar ingress identities/operations into control-plane admissió i trucades de ganxo; no implementa ni altera les matemàtiques de proves del Recorder.

  • Enterprise config is fail-closed: enabled mode requires token security mode, La configuració de l’empresa és de fallada tancada: el mode habilitat requereix el mode de seguretat del token, la configuració de l’URL/token del pla de control i les comprovacions de fitxers de token reforçades.

  • Enterprise policy gate calls Crides de política empresarial de porta POST /v1/enterprise/ingress/check abans de les operacions de sidecar protegides.

  • 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. Els rutes de segments mutables eliminats no s’inclouen en aquest vocabulari.

  • Managed-cloud mode enforces writer-lease assertion for mutating operations El mode de núvol gestionat aplica l’assertiva de lloguer d’escriptor per a operacions de mutació quan require_writer_lease_header=true.

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

    • admissió (permetre/denegar/error abans de l’execució del controlador),
    • result (permet/rebutja/error després de l’estat de resposta 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 camí d’èxit no auditat.

  • Enterprise readiness dependency checks use probes.enterprise_health_path (default /health) against the configured enterprise control-plane base URL when Les comprovacions de dependència de preparació de l’empresa utilitzen probes.enterprise_health_path (per defecte /health) contra la URL base del pla de control de l’empresa configurada quan 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 Contract

Els errors es retornen com a detalls de problemes RFC 9457 (application/problem+json) amb codis d’error estables, metadades de reintents i camps de correlació servidor/client.

Detalls de la postura de seguretat:

  • malformed JSON rejections are normalized to typed bad_request problem details les rebuig de JSON mal formatades es normalitzen a un problema de tipus bad_request detalls en comptes de filtrar fallades d’extractors de framework/plaintext,
  • server-side (5xx) responses suppress internal detail fields to avoid leaking storage/runtime internals while preserving diagnostics in service registres,
  • 401 unauthorized les respostes inclouen desafiaments WWW-Authenticate de l’RFC 6750.

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


Idempotència i seguretat de reintents

POST /v1/envelopes i POST /v1/envelopes/with-attachments ara envien ordres normalitzades a una cua en memòria limitada (IngestGateway) i són processades per un entorn d’execució dedicat de escriptura única (IngestWriterRuntime).

La idempotència propietària dels escriptors es persisteix en idempotency_entries, delimitada per: (stream_tenant_id, stream_recorder_id, endpoint, idempotency_key) més el hash de la sol·licitud canònica.

Comportament de l’escriptor de camí calent:

  • els manipuladors de mutació només posen en cua ordres normalitzades,
  • writer-native sealing computes deterministic attachment refs, content hash, cadena hash, seqüència de flux i rebuts,
  • one SQLite transaction per micro-batch persists envelopes, projection rows, entrades d’idempotència, estat del flux i transicions de segment 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 persistència del punter; això preserva la invariant de reinici de segment únic obert.

Comportament:

  • mateixa clau + mateix hash: reproduir el rebut durable anterior (idempotency_outcome=replayed),
  • mateixa clau + hash diferent: 409 idempotency_conflict,
  • saturació de la cua: fail-fast 429 too_many_requests,
  • fallada d’emmagatzematge: fail-closed idempotency_unavailable / storage_unavailable.

La retenció està limitada per ingest.idempotency_ttl_seconds i ingest.idempotency_max_entries_per_stream. La neteja de la retenció dels escriptors s’aplica en dues fases dins de la mateixa transacció:

  1. neteja de caducitat per 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) per evitar pics de latència de retallada induïts per la profunditat de la història.

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

Ruta de compatibilitat d’ingestió OTel:

  • POST /v1/ingest/otel ingests OTel JSON export payloads through recorder-otel-adapter with deterministic mapping and strict-fail record validació.
  • Route behavior is additive under /v1, requires Idempotency-Key, and reutilitza controls de correlació de temps d’espera de límits d’autenticació/empresa/sidecar.
  • La resposta en temps d’execució inclou la versió de mapeig i els comptes d’ingestió deterministes.

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


Transport i Cicle de Vida

Modes de transport:

  • Socket de domini Unix,
  • oient TCP,
  • ambdós simultàniament.

Cicle de vida d’execució:

  • neteja de sockets Unix obsolets abans de l’enllaç (socket-type-validated fail-closed),
  • token de cancel·lació impulsat per senyal,
  • apagada elegant per a l’escolta amb un temps d’espera shutdown_drain_seconds imposat,
  • Eliminació de sockets Unix en el camí de tancament.

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

Comandament operatiu superficial en binari:

  • inici normal del servei amb --config / RECORDER_SIDECAR_CONFIG,
  • healthcheck ordre que suporta modes de sondatge TCP URL i Unix-socket.

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


Envasament de contenidors i operacions de Docker

El repositori ara inclou un perfil de contenidor sidecar de primera part sota docker/sidecar/.

  • Dockerfile: construcció de Rust de múltiples etapes per a una imatge d’execució sense distribució i sense permisos d’usuari.
  • docker-compose.yml: local operator profile with explicit UID/GID mapping, bind-mounted config/data/run paths, tmpfs-backed token target path, Docker camí de font secret, comprovació de salut i mapeig de port limitat.
  • config/sidecar.toml: container-oriented baseline config with token-mode config/sidecar.toml: configuració bàsica orientada a contenidors amb autenticació en mode token requerida per al transport no de loopback.
  • .env.example: canonical environment variable contract for image/tag/paths i mapeig de la font token-secret + UID/GID.

Contracte d’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 només per a propietaris (0600 en Unix) abans de l’inici del sidecar,
  • run non-root with host UID/GID mapping so strict token checks remain readable executar sense permisos d’usuari root amb mapeig d’UID/GID de l’amfitrió perquè les comprovacions de token estrictes es mantinguin llegibles mentre s’evita l’execució com a 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ó i Cobertura de Proves

L’actual pila de validació de sidecar inclou:

  • config fail-closed validation assertions (port, header hard cap, configurar les afirmacions de validació fail-closed (port, límit de capçalera, límits d’auto-seal),
  • comportament del middleware de límits de longitud de contingut,
  • comportament de sanitització de l’identificador de correlació,
  • comprovacions de determinisme del hash de la sol·licitud d’idempotència canònica.
  • generated error-registry compatibility assertions (Docs/generated/recorder/apis/sidecar.errors.json vs línia base d’execució).
  • restart-boundary idempotency replay/conflict integration checks over real comprovacions d’integració de reproducció/conflicte d’idempotència de límits de reinici sobre el subprocess de sidecar real + persistència SQLite.
  • parallel rolled-load restart correctness test coverage asserting exactly one segment obert persistit i reinici exitós després de la càrrega.
  • contract hardening checks for RFC 9457 payload shape, RFC 6750 auth challenge comprovacions de reforç del contracte per a la forma de càrrega de l’RFC 9457, capçaleres de repte d’autenticació de l’RFC 6750 i propagació de capçaleres de correlació.
  • strict media-type matrix checks for content-type/accept fail-closed behavior amb codis d’error estables unsupported_media_type i not_acceptable.
  • probe hardening checks for unauthenticated probe routes and startup probe comprovacions de reforç de sondes per a rutes de sondes no autenticades i contracte de resposta de la sonda d’inici.
  • readiness hardening checks for admission saturation fail-closed behavior and verificacions de reforç de preparació per al comportament de fallada tancada de saturació d’admissió i transicions de mode de dependència del pla de control empresarial.
  • enterprise outage mutation checks proving write paths fail closed with servei-no-disponible quan la dependència d’entrada del pla de control està baix.
  • generated sidecar contract compatibility gates (openapi/errors/enums/examples/compat) portes de compatibilitat del contracte sidecar generades (openapi/errors/enums/examples/compat) aplicades en l’orquestració 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) i destinat a feines nocturnes/pre-liberació fixades.
  • sidecar perf architecture split:
    • regression lane artifact: target/sidecar-perf/latest.json (lane=regressió, senyal anti-regressió de càrrega de treball fixa),
    • capacity lane artifact: target/sidecar-capacity/latest.json (lane=capacity, saturation sweep with max_sustainable_rps and knee mètriques).
  • system-test sidecar suites for end-to-end HTTP record/query/build/verify and reinici de persistència idempotent.
  • system-test Docker suite validating Dockerfile/Compose/config hardening plus Docker Compose build/up/down with containerized startup/readiness probes plus flux de treball de registre/consulta.
  • 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) abans d’interpretar els ràtios 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, Anonymous, Private_Dirty, Shared_Clean, Shared_Dirty).
  • 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 per a la classificació de mecanismes i recomanació de mitigació.
  • ingest batching byte-estimation path now avoids per-command Vec<u8> allocation churn in writer_command_estimated_bytes by counting serialized Bytes JSON mitjançant serde_json::to_writer contra un dipòsit de comptatge.
  • system-test sidecar capacity suite for release-only concurrency sweep points (32..512), deterministic correctness sampling, and pinned-runner max_sustainable_rps/mètrica d’emissió del genoll.

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


File per Fitxer Referència Creuada

ÀreaFitxerNotes
Límits de la caixacrates/recorder-sidecar/src/lib.rsPunt d’entrada públic de la caixa i composició de mòduls.
Temps d’execució binaricrates/recorder-sidecar/src/main.rsCLI, inici del servei i comportament de comprovació de salut.
Binari d’arrencada del contenidorcrates/recorder-sidecar/src/bin/docker_bootstrap.rsIngesta de font de token tancada en cas d’error i materialització de fitxers de token en contenidor endurit abans de l’inici del sidecar.
Config + validaciócrates/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.rsModel de configuració de sidecar canònic, validació d’inici tancada en cas d’error i artefactes de projecció de configuració determinista.
Política de tipus de mitjanscrates/recorder-sidecar-config/src/media_types.rsPolítica estricta de tipus de mitjans compartida per al comportament del parser d’execució i artefactes de contracte de sidecar generats.
Arrencada del servidorcrates/recorder-sidecar/src/server.rsCablejat d’emmagatzematge/execució, construcció de rutes, cicle de vida del transport.
Estat compartitcrates/recorder-sidecar/src/state.rsGestors d’execució i portes de concurrència.
Superfície d’errorcrates/recorder-sidecar/src/error.rsModel d’error API estructurat.
Extractors JSONcrates/recorder-sidecar/src/extract.rsNormalització estricta de límits JSON per a errors de parseig tipats.
Base de contracte d’execuciócrates/recorder-sidecar/src/contract.rsVersió d’API exportada i constants del registre d’errors utilitzades per les proves de contracte.
Ingesta d’escriptor úniccrates/recorder-sidecar/src/ingest.rsAdmissió de cua limitada, generació de rebuts duradors, seqüenciació d’àmbit de flux i estat d’idempotència persistent.
Porta de política empresarialcrates/recorder-sidecar/src/control_plane_bridge.rsAdaptador de límit empresarial només: comprovacions d’entrada del pla de control i emissió de ganxos de sidecar.
Middleware d’autenticaciócrates/recorder-sidecar/src/middleware/auth.rsComprovacions de token portador amb comparació en temps constant.
Middleware empresarialcrates/recorder-sidecar/src/middleware/enterprise.rsExtracció d’identitat empresarial i aplicació de límits/sequenciació de ganxos.
Middleware de límitscrates/recorder-sidecar/src/middleware/bounds.rsControls de capçalera/contenut/cua/concurrència/temps d’espera.
Controlador d’ingesta OTelcrates/recorder-sidecar/src/handlers/otel.rsRuta d’ingesta JSON OTel, acoblament d’idempotència i invocació d’adaptador.
Adaptador OTelcrates/recorder-otel-adapter/src/adapter.rsImplementació de mapeig/redacció/límits OTel determinista utilitzada pels fluxos d’ingesta de sidecar i CLI.
Paquetització Dockerdocker/sidecar/Dockerfile, docker/sidecar/docker-compose.yml, docker/sidecar/config/sidecar.toml, docker/sidecar/.env.example, docker/sidecar/README.mdPerfil de construcció/execució de contenidors de primera part i guia d’ús per a operadors, incloent flux d’arrencada de font secreta + tmpfs.
Mòduls de proves unitàries de sidecarcrates/recorder-sidecar-config/src/config/tests.rs, crates/recorder-sidecar/src/idempotency.rs, crates/recorder-sidecar/tests/unit/middleware/bounds/tests.rsLes proves unitàries s’externalitzen dels fitxers font de producció per a una organització de fitxers més neta.
Proves de sistema Docker de sidecarsystem-tests/tests/suites/sidecar_docker.rsEnduriment de Dockerfile/Compose i validació del flux de treball de sidecar en contenidor.
Controladors de sondescrates/recorder-sidecar/src/handlers/health.rsComportament de viabilitat/inici/preparació, incloent modes de saturació i preparació de dependències empresarials.
Proves de conformitat de contractescrates/recorder-sidecar/tests/error_registry_contract.rs, crates/recorder-sidecar/tests/idempotency_restart.rs, crates/recorder-sidecar/tests/http_contract_hardening.rsComprovacions de registre, idempotència de reinici i enduriment de límits HTTP.
Proves d’integració empresarialcrates/recorder-sidecar/tests/enterprise_control_plane_e2e.rsComprovacions E2E de límits d’admissió/resultat empresarial, incloent comportament de mutació tancada en cas d’error del pla de control.
Portes CI de contractescripts/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.shPortes de contracte v1 abans de la publicació, més orquestració de rendiment de matriu de perfil i governança de llindars anti-sandbagging.
Proves de sistema de 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 del cicle de vida HTTP de punta a punta, carrils de dependència del pla de control tancats en cas d’error empresarial i generació de informes de rendiment de regressió/capacitat per a SLO i control de saturació.
Alineació de seguretatDocs/security/threat_model.mdMapeig de amenaces autoritzades i riscos residuals.