Arquitectura del Sidecar del Recorder
Audience: Engineers implementing or operating
recorder-sidecaras the servei d’enregistrament d’evidències accessible a la xarxa.
Taula de continguts
- Visió Executiva
- Composició en temps d’execució
- HTTP Superfície i Ruteig
- Controls de Seguretat i Recursos
- Idempotència i Seguretat de Reintents
- Transport i Cicle de Vida
- Envasament de contenidors i operacions de Docker
- Validació i Cobertura de Proves
- 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:
- 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). - Inicialitza el rastreig i obre
SqliteStore. - Construir components d’execució del gravador.
- Inicialitzar la passarel·la d’ingestió limitada + tasca d’execució de escriptura dedicada.
- Construir el router
axumamb la pila de middleware. - 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/activenow returns the same paginated list shape asGET /v1/segments(no és un recurs singleton), filtrat astatus=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_idirecorder_iden els cossos de les sol·licituds. recorder_idha de coincidir amb la identitat del gravador de sidecar configurat.- In enterprise-enabled modes, mutating envelope routes require
x-tenant-idvinculació d’encapçalament/cos.
Comportament de salut:
GET /healthés una prova de vivència lleugera que retorna metadades del procés.GET /startupis a startup-completion probe returning startup metadata,GET /startupés una sonda de completament d’inici que retorna metadades d’inici, incloentstartup_verification_depthconfigurat.GET /readyreturns readiness state with dependency-aware fail-closed semantics:- 503 amb raó=storage_unavailable quan falla l’accés a la botiga.
- Optional
503withreason=request_capacity_exhaustedwhenprobes.ready_fail_on_admission_saturation=trueand admission/execution Opcional503ambreason=request_capacity_exhaustedquanprobes.ready_fail_on_admission_saturation=truei els semàfors d’admissió/execució estan esgotats. - Optional
503withreason=enterprise_control_unavailablewhenprobes.readiness_mode=storage_and_enterprise, enterprise mode is enabled, Opcional503ambreason=enterprise_control_unavailablequanprobes.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=tokenand keeps el transport no de loopback requereixsecurity.mode=tokeni mantérequire_token_for_non_loopback=true(tancat per defecte), - token file hardening (
security.token_filecannot be a symlink, must be a enduriment del fitxer de token (security.token_fileno 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_NOFOLLOWon Unix,FILE_FLAG_OPEN_REPARSE_POINTon 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_pathmust be absolute/safe andprobes.readiness_mode=storage_and_enterpriserequires 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:
- Límit del cos de la sol·licitud (
max_request_body_bytes). - Capa de traçabilitat.
- Correlation middleware (server correlation IDs, sanitized client
Middleware de correlació (IDs de correlació del servidor, client
x-correlation-idsanititzat, compatibilitat ambx-request-idllegat). - Auth middleware (
Bearertoken mode with constant-time compare and RFC 6750 Middleware d’autenticació (mode de token Beareramb comparació en temps constant i metadades de repte RFC 6750 en respostes401). - Enterprise identity middleware (
x-tenant-id,x-principal-id,x-authn-method, optionalx-namespace-id, optional writer lease assertion) per a modes habilitats per a empreses. - Enterprise policy middleware (control-plane ingress checks for protected
routes plus sidecar boundary hook emission at
admissionandresultfases). - 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/readyare 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-Typeparsing is strict fail-closed (application/jsonwith opcionalcharset=utf-8només),Acceptel processament és estricte i tanca en fallada (application/jsono*/*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.rsis 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/checkabans 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, andrecorder.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/hooksat:- 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 utilitzenprobes.enterprise_health_path(per defecte/health) contra la URL base del pla de control de l’empresa configurada quanprobes.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_requestproblem details les rebuig de JSON mal formatades es normalitzen a un problema de tipusbad_requestdetalls en comptes de filtrar fallades d’extractors de framework/plaintext, - server-side (
5xx) responses suppress internaldetailfields to avoid leaking storage/runtime internals while preserving diagnostics in service registres, 401 unauthorizedles respostes inclouen desafiamentsWWW-Authenticatede 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ó:
- neteja de caducitat per
expires_at_unix, - overflow cleanup by ordered offset delete over
created_at_unix DESC. This path relies onSQLitestream-scope ordering indexidx_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/otelingests OTel JSON export payloads throughrecorder-otel-adapterwith deterministic mapping and strict-fail record validació.- Route behavior is additive under
/v1, requiresIdempotency-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_secondsimposat, - 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, healthcheckordre 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-modeconfig/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/tokenin tmpfs with permisos només per a propietaris (0600en 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/tokenas 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_typeinot_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, emitstarget/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 withmax_sustainable_rpsand knee mètriques).
- regression lane artifact:
- 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-stopwal_size_post_stop_bytes, and coupledwal_checkpoint_noopstate 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) emittingtarget/sidecar-perf/rss_attribution_latest.jsonwith fixed-volume sequential/parallel quiesce-window checkpoints andsmaps_rollupclass deltas (Rss,Anonymous,Private_Dirty,Shared_Clean,Shared_Dirty). - ignored informational ingest-tuning characterization lane
(
sidecar_perf_rss_ingest_tuning_characterization) emittingtarget/sidecar-perf/rss_ingest_tuning_latest.jsonwith 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 inwriter_command_estimated_bytesby counting serialized Bytes JSON mitjançantserde_json::to_writercontra un dipòsit de comptatge. - system-test sidecar capacity suite for release-only concurrency sweep points
(
32..512), deterministic correctness sampling, and pinned-runnermax_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
| Àrea | Fitxer | Notes |
|---|---|---|
| Límits de la caixa | crates/recorder-sidecar/src/lib.rs | Punt d’entrada públic de la caixa i composició de mòduls. |
| Temps d’execució binari | crates/recorder-sidecar/src/main.rs | CLI, inici del servei i comportament de comprovació de salut. |
| Binari d’arrencada del contenidor | crates/recorder-sidecar/src/bin/docker_bootstrap.rs | Ingesta 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.rs | Model 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 mitjans | crates/recorder-sidecar-config/src/media_types.rs | Política estricta de tipus de mitjans compartida per al comportament del parser d’execució i artefactes de contracte de sidecar generats. |
| Arrencada del servidor | crates/recorder-sidecar/src/server.rs | Cablejat d’emmagatzematge/execució, construcció de rutes, cicle de vida del transport. |
| Estat compartit | crates/recorder-sidecar/src/state.rs | Gestors d’execució i portes de concurrència. |
| Superfície d’error | crates/recorder-sidecar/src/error.rs | Model d’error API estructurat. |
| Extractors JSON | crates/recorder-sidecar/src/extract.rs | Normalització estricta de límits JSON per a errors de parseig tipats. |
| Base de contracte d’execució | crates/recorder-sidecar/src/contract.rs | Versió d’API exportada i constants del registre d’errors utilitzades per les proves de contracte. |
| Ingesta d’escriptor únic | crates/recorder-sidecar/src/ingest.rs | Admissió de cua limitada, generació de rebuts duradors, seqüenciació d’àmbit de flux i estat d’idempotència persistent. |
| Porta de política empresarial | crates/recorder-sidecar/src/control_plane_bridge.rs | Adaptador 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.rs | Comprovacions de token portador amb comparació en temps constant. |
| Middleware empresarial | crates/recorder-sidecar/src/middleware/enterprise.rs | Extracció d’identitat empresarial i aplicació de límits/sequenciació de ganxos. |
| Middleware de límits | crates/recorder-sidecar/src/middleware/bounds.rs | Controls de capçalera/contenut/cua/concurrència/temps d’espera. |
| Controlador d’ingesta OTel | crates/recorder-sidecar/src/handlers/otel.rs | Ruta d’ingesta JSON OTel, acoblament d’idempotència i invocació d’adaptador. |
| Adaptador OTel | crates/recorder-otel-adapter/src/adapter.rs | Implementació de mapeig/redacció/límits OTel determinista utilitzada pels fluxos d’ingesta de sidecar i CLI. |
| Paquetització Docker | docker/sidecar/Dockerfile, docker/sidecar/docker-compose.yml, docker/sidecar/config/sidecar.toml, docker/sidecar/.env.example, docker/sidecar/README.md | Perfil 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 sidecar | crates/recorder-sidecar-config/src/config/tests.rs, crates/recorder-sidecar/src/idempotency.rs, crates/recorder-sidecar/tests/unit/middleware/bounds/tests.rs | Les proves unitàries s’externalitzen dels fitxers font de producció per a una organització de fitxers més neta. |
| Proves de sistema Docker de sidecar | system-tests/tests/suites/sidecar_docker.rs | Enduriment de Dockerfile/Compose i validació del flux de treball de sidecar en contenidor. |
| Controladors de sondes | crates/recorder-sidecar/src/handlers/health.rs | Comportament de viabilitat/inici/preparació, incloent modes de saturació i preparació de dependències empresarials. |
| Proves de conformitat de contractes | crates/recorder-sidecar/tests/error_registry_contract.rs, crates/recorder-sidecar/tests/idempotency_restart.rs, crates/recorder-sidecar/tests/http_contract_hardening.rs | Comprovacions de registre, idempotència de reinici i enduriment de límits HTTP. |
| Proves d’integració empresarial | crates/recorder-sidecar/tests/enterprise_control_plane_e2e.rs | Comprovacions E2E de límits d’admissió/resultat empresarial, incloent comportament de mutació tancada en cas d’error del pla de control. |
| Portes CI de contracte | scripts/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.sh | Portes 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 sidecar | system-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.rs | Cobertura 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 seguretat | Docs/security/threat_model.md | Mapeig de amenaces autoritzades i riscos residuals. |