Model de Amenaça del Recorder
Visió general
Recorder és el pla de dades d’evidència determinista per a sistemes de governança. Ingesta esdeveniments de límit no segellats, els segella en sobres en cadena de hash, els persisteix en segments només d’append, i exporta paquets verificables per a comprovacions fora de línia.
Recorder està compost per:
- Core contracts (
recorder-core): identity, hash/signature abstractions, tipus de filtre/cursor, àlgebra d’errors. - Envelope model (
recorder-envelope): canonical encoding, envelope/segment/bundle tipus, resultat de verificació àlgebra. - Decision Gate integration adapter (
recorder-decision-gate-adapter): deterministic MCP/runpack transcript mapping, runpack integrity policy, and redacció de transcripcions / aplicació de la política de límits. - OpenTelemetry integration adapter (
recorder-otel-adapter): deterministic OTel JSON export mapping, strict record validation, and aplicació de la política de redacció/límits. - Recorder runtime (
recorder): ingest validation, segment lifecycle, constructor de paquets, verificador fora de línia, implementacions de proveïdor/adaptador. - Rust SDK facade (
recorder-sdk): deterministic builder and unified in-process façana sobre gravador, adaptador, proveïdor, verificador i gestors d’emmagatzematge. - Python sidecar SDK (
recorder-client): contract-driven sync/async sidecar HTTP client with strict response/error typing, retry-safe idempotency behavior, i comprovacions de deriva de contractes generats. - Storage backends (
recorder-store): SQLite and in-memory implementations of envelop, adjunt i emmagatzematges de segment. - Sidecar config authority (
recorder-sidecar-config): canonical sidecar config model, fail-closed validation, and deterministic config projection artifacts (schema/compat/example/docs) consumit per la generació de contractes i les portes de CI. - Sidecar service surface (
recorder-sidecar): HTTP/JSON runtime exposing recorder/query/bundle/config workflows over Unix/TCP with auth/bounds/ idempotency controls, strict media-type policy enforcement, and first-party Ruta de compatibilitat d’ingestió JSON d’OTel. - CLI surface (
recorder-cli): local operator commands for record/query/bundle/ config/doctor workflows més Decision Gate i ingestió de fixtures OTel.
Recorder ara admet tant fluxos de treball de procés local com una frontera de servei HTTP integrat. Les envoltants externes (per exemple, ponts MCP o portals API) continuen estant dins de l’abast com a fronteres hostils.
Documentació relacionada
- Visió general del repositori:
README.md. - Postura de seguretat i requisits:
Docs/Standards/codebase_engineering_standards.md. - Architecture references: Docs/architecture/recorder_system_architecture.md, Docs/architecture/recorder_evidence_model_and_integrity_architecture.md, Docs/architecture/recorder_runtime_and_bundle_architecture.md, Docs/architecture/recorder_storage_architecture.md, Docs/architecture/recorder_sidecar_architecture.md, Docs/architecture/recorder_cli_and_operator_workflows_architecture.md, Docs/architecture/recorder_system_test_and_validation_architecture.md.
- Design references:
Docs/design/recorder_core_math_evidence_observability_and_verification.md, Referències de disseny:Docs/design/recorder_core_math_evidence_observability_and_verification.md,Docs/design/dg_proof_recorder_and_mobile_edge_interaction_model.md.
Objectius de Seguretat
- Resultats d’integritat d’envolup i paquet deterministes i reproduïbles.
- Historial d’apèndix només amb evidència de manipulació i aplicació de continuïtat de cadena.
- Comportament de fallida tancada en dades malformades, mancants, ambigües o no verificables.
- Portabilitat de paquets verificables fora de línia sense dependències en viu de confiança.
- Clear trust boundaries between adapters, recorder runtime, stores, and Clars límits de confiança entre adaptadors, temps d’execució del gravador, magatzems i consumidors.
- Exposició d’entrada/recurso limitada als punts d’entrada de l’operador.
- Strong adversary posture: designs must remain defensible against compromised Postura d’adversari forta: els dissenys han de romandre defensables contra insiders compromesos i operadors capaços d’estat-nació.
No-objectius / Fora d’abast
- Garanties de confidencialitat després que les proves es revelin als sistemes de baix nivell.
- Defensa contra la compromissió completa de l’amfitrió/núcli sense controls de plataforma externs.
- Key custody/HSM/remote attestation infrastructure (beyond current local key Infraestructura de custòdia de claus/HSM/atestació remota (més enllà dels actuals punts d’ús de claus locals).
- Built-in transport security for remote deployment wrappers (mTLS/authn/authz Seguretat de transport integrada per a wrappers de desplegament remot (mTLS/authn/authz són responsabilitats de desplegament avui dia).
- Non-repudiation signing of bundle archives at rest (external signing/WORM is Signatura de no repudiació dels arxius de paquet en repòs (es requereix signatura externa/WORM).
Actius
- Unsealed and sealed envelope data (event type, actor, environment, payload, Dades d’envelopes no segellades i segellades (tipus d’esdeveniment, actor, entorn, càrrega, temps, IDs de correlació).
- Envelope integrity material (
content_hash,chain_hash, sequence position, Material d’integritat de l’envolup (content_hash,chain_hash, posició de seqüència, vinculació de segments). - Metadades del segment (
SegmentGenesis, enllaç de predecessors, registres de segell). - Bytes d’adjunt i hashes de contingut.
- Contingut del paquet (segments, sobres, adjunts, ancoratges de prova).
- Manifestos de verificació, artefactes de veredicte i artefactes de transcripció de verificadors.
- Recorder runtime configuration (
recorder_id, schema version, auto-seal, Configuració d’execució del gravador (recorder_id, versió de l’esquema, segellat automàtic, profunditat de verificació d’inici). - Fitxer d’emmagatzematge SQLite i estat en memòria.
- Material de clau de signatura i IDs de clau derivades quan els signants estan configurats.
- Persisted signer-rotation state (
store_metakeys for current key, epoch, Estat de rotació del signant persistit (store_metaclaus per a la clau actual, època i marcador de l’últim esdeveniment de rotació). - Generated contract artifacts under Docs/generated/recorder/** and manifest authority Docs/generated/recorder/index.json, including sidecar API artifacts (Docs/generated/recorder/apis/sidecar.*), sidecar config artifacts (Docs/generated/recorder/config/sidecar.*), and SDK projection artifacts (Docs/generated/recorder/sdk/*).
- Performance policy artifacts (
target/perf-matrix/latest.json,target/perf/v2/*.json,target/perf/triage/latest.md,system-tests/perf_baselines/*.json) i metadades de la impressió digital del corredor. - CLI artifacts (selector JSON, payload JSON, attachment file/inline payloads, Decision Gate fixture JSON, OTel fixture JSON, config JSON, bundle JSON, verificador de transcripció JSON i comprovació d’assegurança JSON.
- Container deployment artifacts and runtime mounts (Dockerfile image outputs, compose/env definitions, mounted sidecar config/data/run paths, Docker secret caminos de origen del token, i caminos de destinació tmpfs del token).
Model d’Adversari
- Adversaris d’estat-nació amb visibilitat completa del codi i persistència a llarg termini.
- Adaptadors/clients no fiables que envien sobres o fitxers adjunts maliciosos.
- Insiders compromesos amb accés d’escriptura a la configuració, binaris o emmagatzematge.
- Attackers tampering with on-disk SQLite data, bundle files, or exported Atacants manipulant dades SQLite en disc, fitxers de paquet o artefactes exportats.
- Attackers attempting replay, chain forking, payload mutation, or attachment Atacants que intenten reproduir, bifurcar cadenes, mutar càrregues útils o substituir adjunts.
- Atacants que induïxen l’exhauriment de recursos mitjançant entrades massa grans o costoses.
- Malicious integrators exposing Recorder via remote transports without sufficient controls d’accés.
Trust Boundaries
- Límits d’ingestió de l’adaptador:
UnsealedEnvelopei les dades d’adjunt no són de confiança. - Límits del CLI / operador: tots els valors de la línia de comandes i els fitxers JSON no són de confiança.
- Límits de configuració en temps d’execució: el contingut del fitxer de configuració i la ruta d’emmagatzematge no són de confiança.
- Sidecar HTTP boundary: request line, headers, auth token, JSON body, and Límits del costat HTTP: la línia de sol·licitud, les capçaleres, el token d’autenticació, el cos JSON i la metadada de transport no són de confiança.
- Sidecar enterprise bridge boundary: enterprise control-plane admission and les trucades de ganxo són dependències de xarxa no confiables i han de fallar de manera segura.
- Límite d’emmagatzematge: les files/blobs persistents no són de confiança en la lectura.
- Límite del paquet: el JSON del paquet importat no és de confiança abans de la verificació.
- Evidence provider boundary: consumer calls to list/fetch/verify/query are Límits del proveïdor d’evidències: les trucades del consumidor per llistar/obtenir/verificar/consultar són sol·licituds no fiables.
- Rust SDK facade boundary: builder/runtime inputs (
recorder_id, adapter metadata, storage path, trust root, signer/trust policy) are untrusted and ha de preservar el comportament de tancament en fallada del gravador/proveïdor. - Python SDK boundary: sidecar endpoint/base URL, auth token, idempotency headers, retry/backoff policy inputs, request models, query parameters, and HTTP response payloads are untrusted and must fail closed on contract drift, còdigs d’error desconeguts, o desajustament d’esquema.
- Decision Gate adapter boundary: Decision Gate transcript/runpack fixture Límit de l’adaptador de Decision Gate: les càrregues útils del transcripció/runpack de Decision Gate no són de confiança i han de passar les comprovacions de mapeig/integritat abans de la ingestió.
- OTel adapter boundary: OpenTelemetry JSON export payloads are untrusted and must pass strict record-shape, identifier, timestamp, and bounded/redacted comprovacions de mapeig abans de la ingesta.
- Signing boundary: signer/verifier integrations and key management are external Límits de signatura: les integracions de signant/verificador i la gestió de claus són dependències de confiança externes.
- Contract generation boundary: generated projection artifacts are untrusted Límits de generació de contractes: els artefactes de projecció generats no són de confiança fins que es verifiquin mitjançant hash contra el manifest de l’índex canònic.
- Performance harness boundary: runner-class labels, workload knobs, and perf
artifacts are untrusted until lane identity (
regression/capacity), la metadada de càrrega de treball i les comprovacions de política de corredor fixat són validades. - External wrapper boundary: any network-facing bridge is outside this repo and Límits de l’envàs extern: qualsevol pont orientat a la xarxa és fora d’aquest repositori i ha d’aplicar proteccions d’autenticació/autoritza i de transport.
- Container-orchestration boundary: compose/env/runtime mount definitions, Docker secret source paths, tmpfs token-target paths, and host filesystem ownership/permission models are untrusted deployment inputs and must satisfy restriccions de reforç de configuració del token sidecar.
Punts d’entrada i superfícies d’atac
- CLI commands:
recorder segment open|seal|status|list,recorder signer rotate,recorder envelope record|record-with-attachments,query envelopes,bundle build|verify|inspect,assurance startup|trust-root|gates,contract generate|check,decision-gate ingest-fixture,otel ingest-fixture,config validate,metge. - Sidecar commands:
recorder-sidecar --config <path>,recorder-sidecar healthcheck --url <url>,recorder-sidecar healthcheck --unix-socket <path> --path <path>. - Sidecar HTTP routes:
GET /health,GET /startup,GET /ready,GET /v1/segments,GET /v1/segments/active,POST /v1/envelopes,POST /v1/envelopes/with-attachments,POST /v1/query/envelopes,POST /v1/bundles/build|verify|inspect,POST /v1/ingest/otel,GET /v1/config. - File inputs: runtime config JSON/TOML, payload JSON/file, attachment file/inline base64, Fitxers d’entrada: configuració de runtime JSON/TOML, càrrega JSON/fitxer, fitxer d’adjunt/base64 en línia, JSON de Decision Gate, JSON de selector, JSON de paquet.
- Container deployment inputs:
docker/sidecar/Dockerfile,docker/sidecar/docker-compose.yml,docker/sidecar/.env, mountedsidecar.toml, Docker secret token source fitxer, directori objectiu del token tmpfs, i directoris de dades/run muntats amb bind. - Library APIs:
RecorderBuilder::build,Recorder::record|record_with_attachments,Recorder::build_bundle|verify_bundle,Recorder::list_bundles|fetch_bundle|query_envelopes,RecorderAdapter::emit_envelope,RecorderAdapter::emit_with_attachments,DecisionGateAdapter::ingest_fixture,RecorderEngine::open_segment|record_envelope|seal_segment,EvidenceProvider::llistar_paquets|obtenir_paquet|verificar_paquet|consultar_envelops. - Storage entry points: SQLite DB creation/open, SQL row materialization, attachment fetch, genesis Punts d’entrada d’emmagatzematge: creació/obertura de la base de dades SQLite, materialització de files SQL, recuperació d’adjunts, decodificació del gènesi.
- Bundle verification pipeline: manifest validation, attachment hash checks, content/chain checks, Canal de verificació de paquets: validació del manifest, comprovacions de hash d’adjunt, comprovacions de contingut/cadena, comprovacions entre segments, fase de signatura.
Controls de seguretat i invariants
- Codificació JCS canònica per a entrades de hash deterministes (
serde_jcs). - Les fórmules de hash del contingut de l’envolup i del hash de la cadena són explícites i estables.
- La genesi del segment ancla el càlcul de la cadena del primer sobre.
- La igualtat de hash utilitza una comparació en temps constant en els camins de nucli/verificador/emmagatzematge.
- La capa d’adaptació/validació aplica comprovacions de fallada tancada abans de registrar.
- Envelope builder enforces required fields, UTC times, deterministic attachment El constructor d’envelopes aplica camps requerits, hores UTC i un ordre de referència d’adjunció determinista.
- Envelope attachment and segment-genesis constructors reject empty, blank, and
Els constructors d’adjunt d’envelopes i de segment-genesis rebutgen entrades
content_typeirecorder_idbuides, en blanc i que continguin caràcters de control. - Recorder config validation fail-closes malformed
recorder_idvalues at La validació de la configuració del gravador falla i tanca valorsrecorder_idmalformats en l’inici del motor (es requereix una forma d’identitat compatible ambActorId). - Core identity constructors reject blank/whitespace-only and control-character
string inputs;
key_idis enforced as exact lowercase Els constructors d’identitat bàsica rebutgen entrades de cadena en blanc/sense espais i de caràcters de control;key_ids’aplica com a forma exacta en minúscules dehex(SHA-256(public_key_bytes))(64 caràcters). - Core identity constructors enforce explicit max lengths:
trace_id/session_id/actor_id/environment_id <= 256 chars, Els constructors d’identitat bàsica imposen longituds màximes explícites:trace_id/session_id/actor_id/environment_id <= 256 chars,event_type/adapter_id <= 128 chars. - String-backed identity serde paths are constructor-validated; hostile JSON Els camins de serde d’identitat basats en cadenes són validats pel constructor; JSON hostil no pot eludir les invariants d’identificador als límits de deserialització.
- L’emmagatzematge d’apèndix imposa invariants d’obertura de segment i continuïtat de cadena.
- Store segment creation enforces single-open-segment and duplicate-segment-ID La creació de segments d’emmagatzematge imposa controls de fallada tancada per a segments oberts únics i ID de segment duplicat.
- Store active-segment lookup fail-closes on corrupted persisted state with múltiples segments oberts en lloc de seleccionar una fila arbitrària.
- Store query/existence paths fail closed on storage-layer query errors instead Les rutes de consulta/existència de l’emmagatzematge fallen tancades en errors de consulta a la capa d’emmagatzematge en comptes de predeterminar resultats d’existència permissius.
- El camí d’append de SQLite és de l’abast de la transacció per a actualitzacions atòmiques de metadades/dades.
- SQLite habilita WAL i claus foranes durant la inicialització de l’esquema.
- Bundle builder uses deterministic ordering (
BTreeMap/BTreeSet) and tracks El constructor de paquets utilitza un ordre determinista (BTreeMap/BTreeSet) i fa un seguiment dels pares/ancres de prova omesos. - Verifier executes 7 phases with trust-root-aware signature verification; it El verificador executa 7 fases amb verificació de signatures conscient de la root de confiança; marca la omissió de signatures només quan no s’ha configurat cap root de confiança.
- Verifier phase 1 fail-closes on manifest structural tampering (segment entry mismatches and attachment-manifest mismatches), not only version/algorithm desajustos.
- Verifier enforces bounded-work policy before phase execution:
max segments
4096, max envelopes per segment100000, max envelopes total200000, max attachments total200000, max attachment refs per envelope4096. - Recorder startup verification re-checks active segment read-back integrity for
La verificació de l’inici del gravador torna a comprovar la integritat de la lectura del segment actiu per a les finestres de profunditat configurades (
startup_verification_depth). - Evidence provider enforces stable bundle IDs and true fetch-by-ID semantics El proveïdor d’evidències aplica identificadors de paquet estables i una semàntica de recuperació per ID veritable per a segments segellats.
- Evidence provider enforces bounded query/materialization policy:
max
list_bundlesandquery_envelopeslimit10000, El proveïdor d’evidències aplica una política de consulta/materialització limitada: màximlist_bundlesiquery_envelopeslímit10000, màxim de materialització d’envelopes per segment200000. - CLI enforces bounded file-read limits: config 1 MiB, payload 4 MiB, selector 1 MiB, bundle 32 MiB, trust root 1 MiB, attachment file/inline payload 16 MiB, Decision Gate fixture 8 MiB, signer clau 64 KiB, frase de pas del signant material 1 KiB.
- CLI query enforces bounded page policy:
default page size
1000, max page size10000, and deterministic La consulta CLI aplica una política de pàgina limitada: mida de pàgina per defecte1000, mida màxima de pàgina10000, i un contracte de continuació basat en cursor determinista en mode JSON. - CLI i18n catalogs are build-validated fail closed:
locale tag uniqueness, required
endefault locale, mandatory locale provenance (machineorhuman_reviewed), exact message-key parity against English, and exact placeholder-set parity for every key across enabled locals. - CLI localization rendering is strict and fail-closed: generated typed key/macro access prevents unknown message keys at compile time, and runtime rendering rejects placeholder-set mismatch and unresolved placeholders sense retrocés silenciós a les ID de clau o anglès.
- CLI locale provenance policy is explicit: machine-provenance locales emit deterministic operator notice, while JSON els payloads de sortida romanen neutrals en quant a la localització a través de la selecció de la localització.
- CLI runtime resolution validates
recorder_idusingActorIdconstructor semantics before command execution, includingconfig validateparity with comportament de validació de la configuració del gravador. - CLI signer loading is profile-aware (
securedefault) and fail-closed on encrypted-key requirements, malformed key material, insecure opt-down misuse, i discrepància entre la clau i l’estat en mode segur. - Explicit key-rotation workflow emits deterministic lifecycle events
(
system.adapter.key_rotated/ break-glass variant) and persists idempotence marcadors en la metadata de SQLite. - Contract generation emits deterministic projection artifacts with La generació de contractes emet artefactes de projecció deterministes amb autoritat de manifest-hash i mode de verificació de deriva estricta.
- Contract generation/check fail closed on unsafe output-root filesystem entries, including symlinked roots, hard-linked artifact files, or symlink recorregut sota l’arbre de sortida.
- Contract schema generation applies explicit runtime constraint overlays for
identifier/text/hash/signature fields (including full
BundleSelectorvariant algebra) and fails closed if expected schema pointer paths are missing. - Contract generation now emits sidecar API artifacts
(
sidecar.openapi/errors/enums/examples/compat) and generated manifest La generació de contractes ara emet artefactes de l’API sidecar (sidecar.openapi/errors/enums/examples/compat) i l’autoritat del manifest generat inclou aquests camins. - Contract generation now emits SDK projection artifacts
(
sdk/types.json,sdk/methods.json,sdk/test_vectors.json,sdk/manifest.json) and drift-check mode fail-closes on SDK artifact desajust. - Rust SDK builder/facade wiring fail-closes invalid identity/config/store entrades mentre es preserva el determinisme del gravador/proveïdor i els límits de treball delimitats.
- Python SDK request/response wiring fail-closes invalid input/query parameter values, unknown problem codes, unexpected content types, and response schema drift against generated SDK projection artifacts while preserving sidecar semàntica d’idempotència a través dels intents de reintentar.
- Sidecar compatibility gates fail closed in CI by validating current
pre-release-break
/v1policy, enum-wire stability, error-code registry stability, and contracte d’aplicació d’idempotència de punts finals mutables a partir d’artefactes generats. - Sidecar perf policy gates split regression (
sidecar_perf) and capacity (sidecar_capacity) lanes with explicit lane identity/workload metadata in artifacts to prevent fixed-workload regression signals from being misread as resultats de màxim rendiment. - Pinned-runner capacity enforcement fails closed when required
sidecar_capacityartifacts are missing, and capacity floors (max_sustainable_rps) are anti-sandbagging protected by threshold policy comprovacions. - Sidecar config validation fail-closes invalid protocol/security settings (schema/API version, transport host/port, non-loopback token requirement, signer key parseability, hard header-size cap, and numeric limit bounds) abans d’enllaçar els oients.
- Sidecar config file and secret-material loading enforce bounded hostile-input
file sizes and fail closed on oversize input:
config
<= 1 MiB, token/control-plane-token files<= 4096 bytes, fitxer de clau del signant<= 65536 bytes. - Sidecar token/control-plane-token file opening uses fail-closed
descriptor-bound semantics:
- Unix: no-follow open (
O_NOFOLLOW) més comprovacions de fitxer regular i mode. - Windows: reparse-point-safe open (
FILE_FLAG_OPEN_REPARSE_POINT) plus rebuig del punt de reanàlisi de mà obert. - Other targets: fail-closed unsupported-platform rejection for secret-token càrrega de fitxer.
- Unix: no-follow open (
- Sidecar middleware stack enforces server/client correlation ID handling
(
x-server-correlation-id,x-correlation-id, legacyx-request-id), strict fail-closed media-type parsing (exactapplication/jsonwith optionalcharset=utf-8) and strict JSON-onlyAcceptparsing, aggregate header byte bounds, declared content-length bounds, bounded queue admission and in-flight concurrència, i comportament de fallada tancada per temps d’espera per sol·licitud. - Sidecar request media-type policy is centralized in
recorder-sidecar-configand projected into generated sidecar API compatibility els artefactes de manera que les llistes blanques de tipus de mitjà d’execució i contracte no puguin desviar-se. - Sidecar token auth compares bearer tokens in constant time and bypasses auth
only for explicit probe routes (
/health,/startup,/ready) oropenmode. - Sidecar probe/readiness controls are explicit and fail closed:
/healthremains lightweight process liveness,/startupreports startup completion state, and/readycan enforce storage-only or storage+enterprise dependency readiness (probes.readiness_mode) with optional capacity-exhaustion comportament de fallada tancada (probes.ready_fail_on_admission_saturation). - Sidecar bounds middleware explicitly bypasses probe routes so orchestrator liveness/startup/readiness signals are observable even under admission El middleware de límits del sidecar elude explícitament les rutes de prova perquè els senyals de viabilitat/inici/lectura de l’orquestrador siguin observables fins i tot sota saturació d’admissió i esgotament de sol·licituds actives.
- Sidecar auth failures emit RFC 6750
WWW-Authenticatechallenge metadata and Les fallades d’autenticació del sidecar emeten metadades de repteWWW-Authenticatede l’RFC 6750 i els errors del sidecar utilitzen els Detalls del Problema de l’RFC 9457 (application/problem+json). - Sidecar container packaging defaults to distroless nonroot runtime and compose profiles that require explicit UID/GID mapping, Docker secret token source inputs, and bootstrap materialization of hardened token files into rutes tmpfs en temps d’execució abans de l’inici del sidecar.
- Sidecar mutating operations enforce persistent idempotency replay/conflict
semantics with stream-scoped persistent retention
(
idempotency_entries) i l’abast del hash de sol·licitud determinista. - Sidecar mutating envelope operations enforce explicit stream identity inputs
(
tenant_id,recorder_id) i rebutjar les discrepàncies del gravador fallades-tancades. - SQLite operation dispatch uses bounded queueing (
sync_channel) with L’operació de dispatch d’SQLite utilitza una cua limitada (sync_channel) amb rebuig determinista de fallada tancada quan la capacitat de la cua (4096) està saturada. - Verifier transcript emission is deterministic and schema-versioned; bundle verification can export transcript JSON for machine-auditable evidence paquets.
- CLI assurance checks provide explicit fail-closed deployment assertions for startup-verification depth, trust-root mode parsing, and contract gate execució.
- System tests validate tamper detection and fail-closed oversized-input Les proves del sistema validen la detecció d’alteracions i el comportament de tancament en fallada per a entrades de mida excessiva.
- System tests validate external adapter-ingest coupling using OpenClaw mock event streams, including signed/unsigned verification and sequence-gap strict Les proves del sistema validen el coupling d’ingestió d’adaptadors externs utilitzant fluxos d’esdeveniments simulats d’OpenClaw, incloent la verificació signada/no signada i les polítiques de fallida tancada estricta vs enregistrament d’anomalies.
- OpenClaw integration mapping applies deterministic sensitive-field redaction and bounded payload handling (string and JSON size limits) before immutable registre d’evidències.
- System tests validate external control-plane coupling using Decision Gate MCP runpack flow fixtures, including signed/unsigned verification and runpack integrity strict fail-closed vs anomaly-recording policies, including Les proves del sistema validen el acoblament del pla de control extern mitjançant Decision Gate MCP fixtures de flux de runpack, incloent la verificació signada/no signada i la integritat del runpack amb fallades estrictes tancades davant de polítiques de registre d’anomalies, incloent la recomputació de l’auto-integritat del manifest a partir dels hash de fitxers declarats.
- System tests validate sidecar subprocess lifecycle over real HTTP and fail-closed idempotency replay/conflict persistence across restart fronteres.
- Decision Gate integration mapping applies deterministic transcript-field redaction and bounded payload handling (string and JSON size limits) before evidència immutable de registre.
- Production
recorder-decision-gate-adapterenforces mapping-contract version checks, deterministic event IDs/timestamps, transcript redaction, bounded metadades de càrrega útil i gestió d’integritat de runpack estricte vs. anomalia. - Production
recorder-otel-adapterenforces deterministic OTel span/log mapping (otel.span,otel.log.<severity>), strict identifier/timestamp parsing, derivació d’ID determinista, i projecció de càrrega limitada/redactada.
Gaps de seguretat rellevants actuals coneguts:
- Sidecar does not include built-in TLS/mTLS; non-loopback deployments should Sidecar no inclou TLS/mTLS integrat; les implementacions no de loopback haurien de finalitzar TLS i fer complir la identitat del client en un proxy/gateway frontal reforçat.
- Sidecar provides bounded local admission controls but not distributed/global rate limiting; deployment platforms still need caller quotas and abuse controls.
Amenaces i Mitigacions
Autenticació, Autorització i Control d’Accés
- Threat: unauthorized local or remote invocation of recording/query/bundle Ameaça: invocació no autoritzada local o remota de rutes de gravació/consulta/paquet.
- Mitigation: sidecar supports explicit token mode with constant-time bearer
token checks, RFC 6750
WWW-Authenticatechallenge responses, and fail-closed Mitigació: el sidecar suporta el mode de token explícit amb comprovacions de token portador en temps constant, respostes de repteWWW-Authenticatede l’RFC 6750, i gestió de configuracions d’autenticació incorrectes que fallen en tancar; la CLI continua sent una invocació de procés local. - Residual risk:
opensidecar mode is deployment-sensitive and should only be used in trusted local IPC environments; non-loopback network deployments Risc residual: el modeopende sidecar és sensible al desplegament i només s’hauria d’utilitzar en entorns IPC locals de confiança; els desplegaments de xarxa que no són de loopback encara requereixen controls d’identitat i transport a la capa de gateway.
Validació d’entrada i anàlisi
- Threat: malformed IDs, non-UTC times, invalid event types, malformed JSON, Ameaça: IDs mal formats, hores no UTC, tipus d’esdeveniment no vàlids, JSON mal format, o càrregues amb ambigüitats.
- Mitigation: typed ID constructors, UTC enforcement, strict event-type
validation, strict key-id hex shape validation, fail-closed envelope
validation, strict attachment/segment text-field validation (
content_type,recorder_id), strict recorder configrecorder_idvalidation, typed JSON parsing. - Mitigation: bounded file reads prevent oversized JSON ingestion at CLI Mitigació: les lectures de fitxers limitades prevenen la ingesta de JSON de mida excessiva a la frontera de la CLI, incloent les entrades de trust-root i signer-key.
Integritat i Autenticitat de l’Evidència
- Threat: payload mutation, chain forking, attachment substitution, or replayed Ameaça: mutació de càrrega útil, bifurcació de cadena, substitució d’adjunt o sobres reproduïts.
- Mitigation: canonical-hash content addressing + chain continuity checks at Mitigació: contingut de hash canònic que aborda + comprovacions de continuïtat de la cadena en el moment d’afegir i verificar.
- Mitigation: verifier phase 1 enforces structural manifest integrity against Mitigació: la fase 1 del verifier aplica la integritat del manifest estructural contra la materialització del segment del paquet i dels adjunts.
- Mitigation: strict Ed25519 verification and trust-root policy enforcement are Mitigació: la verificació estricta d’Ed25519 i l’aplicació de la política de confiança arrel estan integrades a la fase 6 del verificador.
- Mitigation: secure-profile signer loading requires encrypted PKCS#8 key Mitigació: la càrrega del signant del perfil segur requereix material de clau PKCS#8 xifrat per defecte i una opció explícita per a una ergonomia de desenvolupament menys segura.
- Mitigation: explicit key-rotation events and persisted idempotence markers Mitigació: esdeveniments de rotació de claus explícits i marcadors d’idempotència persistents preserven la continuïtat de la línia de signatura i la reconciliació de recuperació de fallades.
- Residual risk: authenticity remains configuration-dependent when operators Risc residual: l’autenticitat continua depenent de la configuració quan els operadors decideixen verificar sense una arrel de confiança (advertència explícita emesa).
Divulgació i Exposició de Dades
- Ameaça: divulgació accidental excessiva a través d’exportacions de paquets i resultats de consultes.
- Mitigació: ordres d’exportació/consulta impulsades per operadors explícits i filtres tipats.
- Residual risk: no built-in field-level redaction policy in Recorder core; wrapper les capes han d’aplicar la política de divulgació.
Emmagatzematge i Integritat del Paquet
- Ameaça: manipulació de DB/arxius, corrupció o escriptures parcials.
- Mitigation: SQLite WAL, transactional append, chain validation, corruption Mitigació: SQLite WAL, append transaccionals, validació de cadenes, detecció de corrupció en analitzar files emmagatzemades no vàlides.
- Mitigation: bundle verification recomputes attachment/content/chain links and Mitigació: la verificació del paquet torna a calcular els enllaços d’adjunt/contenut/cadena i marca les fallades d’integritat.
- Residual risk: bundle archives are not signed by default; use external Risc residual: els arxius de paquet no estan signats per defecte; utilitzeu controls de signatura externa i emmagatzematge immutable per a la no-repudiació.
Disponibilitat i Exhaustió de Recursos
- Threat: oversized config/payload/selector/bundle inputs and expensive Ameaça: entrades de configuració/payload/selector/bundle de mida excessiva i càrregues de verificació costoses.
- Mitigació: límits durs de CLI en lectures de fitxers; rebuig fallit abans de l’anàlisi.
- Mitigació: errors tipogràfics i rebuig anticipat en selectors/filtres invàlids.
- Mitigation: recorder verifier/provider APIs enforce bounded-work limits and Mitigació: les APIs de verificació/proveïment de gravadors imposen límits de treball delimitats i fallen de manera segura en càrregues de treball en memòria excessives.
- Mitigation: sidecar middleware enforces bounded header/body/content-length Mitigació: el middleware sidecar imposa límits de longitud de capçalera/cos/contenut delimitats, cua delimitada + concurrència activa, i un comportament de temps d’espera que falla tancat.
- Mitigation: SQLite operation dispatch is bounded; enqueue saturation fails Mitigació: l’operació de dispatch d’SQLite està limitada; la saturació de la cua falla tancada en comptes de permetre un creixement de memòria il·limitat.
- Residual risk: no distributed/global rate limiter exists for sidecar or wrapper-exposed deployments; operators still need caller quotas and abuse controls.
Cadenes de subministrament i entorn d’execució
- Threat: compromised binaries/config/runtime host or malicious dependency Ameaça: comportament de binaris/configuració/host d’execució compromesos o de dependències malicioses.
- Mitigation: strict lint/no-panic posture, typed errors, deterministic Mitigació: postura estricta de lint/no-pànic, errors tipats, contractes deterministes i límits d’arquitectura explícits.
- Residual risk: host compromise and dependency compromise require external Risc residual: el compromís de l’amfitrió i el compromís de dependència requereixen controls externs (SBOM/auditoria/signatura/enduriment).
Multi-tenant i aïllament
- Ameaça: exposició de dades entre llogaters en desplegaments compartits.
- Mitigació: Els IDs dels gravadors són etiquetes; no hi ha afirmacions d’aïllament implícit del llogater.
- Residual risk: shared deployments must enforce tenant-aware storage, Risc residual: les implementacions compartides han de fer complir l’emmagatzematge conscient del llogater, la xifratge i el control d’accés a les capes de wrapper/implementació.
Auditoria i Observabilitat
- Ameaça: incapacitat per provar el que va passar després de la sospita de manipulació.
- Mitigation: append-only segment model, deterministic hashes, bundle manifests, Mitigació: model de segment només d’append, hashes deterministes, manifestos de paquets, verificador offline i proves de sistema prioritzant els artefactes.
- Residual risk: comprehensive security audit logging for remote auth decisions Risc residual: la registració d’auditories de seguretat exhaustiva per a decisions d’autenticació remota és dependent del wrapper.
Referències d’Implementació (Controls i Proteccions)
Integritat del nucli i de l’envolta
- Canonical encoding and hash formulas:
crates/recorder-envelope/src/encoding.rs. - Hash types, algorithm registry, constant-time equality:
crates/recorder-core/src/hash.rs. - Identity and input-shape validation contracts:
crates/recorder-core/src/identity.rs,crates/recorder-core/src/filter.rs. - Signature contracts and key identity model:
crates/recorder-core/src/signature.rs,crates/recorder-envelope/src/signer.rs,crates/recorder-envelope/src/signature.rs. - Envelope/segment invariants:
crates/recorder-envelope/src/envelope.rs,crates/recorder-envelope/src/segment.rs,crates/recorder-envelope/src/attachment.rs.
Temps d’execució i verificació del gravador
- Recorder lifecycle, chain progression, seal behavior:
crates/recorder/src/engine.rs. - Auto-seal policy validation:
crates/recorder/src/config.rs. - Adapter boundary validation:
crates/recorder/src/validation.rs,crates/recorder/src/local_adapter.rs. - Deterministic bundle assembly and proof anchors:
crates/recorder/src/bundle_builder.rs. - 7-phase verification pipeline and warning model:
crates/recorder/src/verifier.rs. - Evidence provider boundary behavior:
crates/recorder/src/evidence_provider.rs.
Superfície de la Façana SDK
- Rust SDK facade composition and deterministic builder defaults:
crates/recorder-sdk/src/builder.rs,crates/recorder-sdk/src/lib.rs. - SDK prelude and stable consumer import boundary:
crates/recorder-sdk/src/prelude.rs. - SDK facade conformance tests:
crates/recorder-sdk/tests/test_builder.rs,crates/recorder-sdk/tests/test_facade.rs. - Python SDK contract projection generator and typed client surface:
sdk/python/scripts/generate_contract.py,sdk/python/src/recorder_client/generated_contract.py,sdk/python/src/recorder_client/client.py,sdk/python/src/recorder_client/client_common.py,sdk/python/src/recorder_client/sync_client.py,sdk/python/src/recorder_client/async_client.py,sdk/python/src/recorder_client/models.py,sdk/python/src/recorder_client/errors.py. - Python SDK unit/system conformance tests:
sdk/python/tests/test_contract_generated.py,sdk/python/tests/test_models.py,sdk/python/tests/test_errors.py,sdk/python/tests/test_client_unit.py,sdk/python/tests/test_client_system.py.
Adaptadors d’Integració
- Decision Gate adapter ingestion, deterministic mapping, and fail-closed
integrity-policy enforcement:
crates/recorder-decision-gate-adapter/src/adapter.rs. - Decision Gate mapping and redaction/bounds policy defaults:
crates/recorder-decision-gate-adapter/src/policy.rs. - Decision Gate fixture input contract:
crates/recorder-decision-gate-adapter/src/model.rs. - Decision Gate adapter typed error algebra:
crates/recorder-decision-gate-adapter/src/error.rs. - OTel adapter ingestion, deterministic mapping, and strict-fail policy:
crates/recorder-otel-adapter/src/adapter.rs. - OTel mapping and redaction/bounds policy defaults:
crates/recorder-otel-adapter/src/policy.rs. - OTel JSON export input contract and adapter error algebra:
crates/recorder-otel-adapter/src/model.rs,crates/recorder-otel-adapter/src/error.rs.
Emmagatzematge
- Storage contracts and invariants:
crates/recorder-store/src/traits.rs,crates/recorder-store/src/error.rs. - In-memory backend behavior:
crates/recorder-store/src/memory.rs. - SQLite initialization, WAL, FK, connection thread model:
crates/recorder-store/src/sqlite/schema.rs,crates/recorder-store/src/sqlite/connection.rs,crates/recorder-store/src/sqlite/mod.rs. - SQLite envelope/segment/attachment operations:
crates/recorder-store/src/sqlite/envelope_ops.rs,crates/recorder-store/src/sqlite/segment_ops.rs,crates/recorder-store/src/sqlite/attachment_ops.rs.
CLI i Superfície de Validació
- Command routing and runtime resolution:
crates/recorder-cli/src/main.rs. - Input hard limits and bounded file reads:
crates/recorder-cli/src/main.rs. - Localization and deterministic output behavior:
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. - Contract artifact generation and drift checks:
crates/recorder-contract/src/lib.rs,crates/recorder-contract/src/sidecar_api.rs,crates/recorder-contract/src/sidecar_api/openapi.rs,crates/recorder-contract/src/sidecar_api/artifacts.rs,crates/recorder-contract/src/sidecar_api/specs/mod.rs,scripts/ci/generate_all.sh. - Sidecar contract compatibility and perf policy gates:
scripts/ci/sidecar_contract_gates.py,scripts/ci/perf_matrix.py,scripts/ci/perf_gate.py,scripts/ci/perf_threshold_policy.py,scripts/perf/run.py,scripts/perf/update_baseline.py.
Límits del servei Sidecar
- Sidecar bootstrap/config and transport lifecycle:
crates/recorder-sidecar-config/src/config.rs,crates/recorder-sidecar-config/src/validation.rs,crates/recorder-sidecar-config/src/validation/enterprise.rs,crates/recorder-sidecar/src/server.rs,crates/recorder-sidecar/src/shutdown.rs. - Sidecar auth and request-bound controls:
crates/recorder-sidecar/src/middleware/auth.rs,crates/recorder-sidecar/src/middleware/bounds.rs,crates/recorder-sidecar/src/middleware/request_id.rs. - Sidecar single-writer ingest/idempotency and error contract:
crates/recorder-sidecar/src/ingest.rs,crates/recorder-sidecar/src/idempotency.rs,crates/recorder-sidecar/src/error.rs,crates/recorder-sidecar/src/contract.rs. - Sidecar contract conformance integration tests:
crates/recorder-sidecar/tests/error_registry_contract.rs,crates/recorder-sidecar/tests/idempotency_restart.rs. - Sidecar container packaging and operator profile:
docker/sidecar/Dockerfile,docker/sidecar/docker-compose.yml,docker/sidecar/config/sidecar.toml,crates/recorder-sidecar/src/bin/docker_bootstrap.rs.
Validació del Sistema
- Security/system tests:
system-tests/tests/suites/security.rs,system-tests/tests/suites/bundle.rs,system-tests/tests/suites/persistence.rs,system-tests/tests/suites/recorder.rs, Proves de seguretat/sistema:system-tests/tests/suites/security.rs,system-tests/tests/suites/bundle.rs,system-tests/tests/suites/persistence.rs,system-tests/tests/suites/recorder.rs,system-tests/tests/suites/sidecar.rs. - Docker packaging and compose-lifecycle validation:
system-tests/tests/suites/sidecar_docker.rs, Validació del paquet Docker i del cicle de vida de compose:system-tests/tests/suites/sidecar_docker.rs,system-tests/tests/helpers/docker.rs. - Registry-driven validation contract:
Contracte de validació impulsat pel registre:
system-tests/AGENTS.md,system-tests/test_registry.toml.
Requisits Operatius
- Treat all deployments as hostile environments; assume compromised insiders and Tractar totes les implementacions com a entorns hostils; assumir que hi ha insiders compromesos i adversaris capaços d’estat-nació.
- Restrict filesystem access to store/config/bundle paths using least-privilege Restrigeix l’accés al sistema de fitxers als camins store/config/bundle utilitzant ACLs del sistema operatiu amb el mínim privilegi.
- Use signed releases, dependency auditing, and host hardening for production Utilitzeu versions signades, auditoria de dependències i enduriment d’amfitrions per a nodes de producció.
- If exposing Recorder sidecar or wrapper APIs over non-loopback networks, enforce autenticació/autoritza forta, terminació mTLS/TLS i llistes d’ordres permeses.
- For containerized sidecar deployments, run non-root, provide token source via
Docker secret input, materialize token files into tmpfs with owner-only mode
(
0600on Unix) before sidecar startup, and map host UID/GID explicitly so les rutes de dades/escriptura romanen deterministes. - Mantingueu els límits d’entrada de la CLI activats; ajusteu els límits a nivell de wrapper on sigui possible.
- Do not treat unsigned bundles as non-repudiable artifacts; apply external No tracteu els paquets no signats com a artefactes no repudiables; apliqueu controls de signatura externa i de retenció immutable.
- Segment tenants into isolated stores/processes unless explicit shared-tenancy Segmentar inquilins en botigues/processos aïllats a menys que s’implementin controls de lloguer compartit explícits.
- Monitor verifier warnings (especially signature-skip and partial-segment Monitoritzar les advertències de verificació (especialment les advertències de salt de signatura i de segment parcial) com a resultats significatius per a la política.
Postura de fallida
- Fallar tancat en entrades no vàlides o ambigües.
- Rebutjar les addicions que violen l’estat del segment o la continuïtat de la cadena.
- Rebutjar definicions de configuració/filter/rang de temps malformades.
- Mark tampered bundles as
Invalidor fail verification with typed errors on Marcar els paquets manipulats com aInvàlido fallar la verificació amb errors tipats en discrepàncies de manifest/infraestructura. - Mai assumeixis confiança en l’estat persistit sense revalidacions d’integritat.
Model de Amenaça Delta (2026-02-08, OSS Baseline + Docker)
- Initial Recorder repository threat model baseline added under Docs/security/threat_model.md.
- Mapped trust boundaries, controls, and residual risks to concrete current Es van mapar els límits de confiança, controls i riscos residuals als fitxers d’implementació actuals concrets.
- Closed signer/runtime wiring gap with profile-aware secure defaults, bounded S’ha tancat l’espai de connexió del signant/runtime amb valors per defecte segurs conscients del perfil, límits d’entrada del signant delimitats i gestió de material clau que falla tancada.
- Added explicit signer-rotation workflow with deterministic lifecycle events S’ha afegit un flux de treball de rotació de signants explícit amb esdeveniments de cicle de vida deterministes i metadades d’idempotència persistents.
- Added deterministic contract-generation boundary (
recorder-contract) with controls d’autoritat i de verificació de deriva del hash del manifest. - Hardened
recorder-contractoutput-root handling to reject symlinked roots, hard-linked artifact files, and symlink traversal under generated artifact arbres tant en modes de generació com de comprovació. - Added first-party sidecar container deployment boundary: Dockerfile/Compose/config artifacts are now explicit attack surfaces and fronteres de confiança de desplegament.
- Added system-test Docker coverage for sidecar packaging hardening and S’ha afegit cobertura de proves de sistema Docker per a la consolidació del paquet sidecar i la validació del cicle de vida de Docker Compose per obrir/registrar/consultar.
- Closed tracked P1 system-test security-relevant coverage gaps for selector dedup, proof-anchor semantics, cross-segment mismatch fail-closed behavior, Tancades les llacunes de cobertura rellevants per a la seguretat del sistema de prova P1 per a selector dedup, semàntica de prova-ancoratge, comportament de fallada tancada en desajustaments entre segments, comportament de fallada tancada en el tancament d’adjuncions, i paritat SQLite/en memòria.
- Hardened
recorder-coreidentifier validation to reject whitespace-only and control-character string identifiers and require strict 64-char lowercase hexkey_idvalors. - Hardened deserialize boundaries so constrained identifier and envelope text S’han endurit els límits de deserialització perquè els identificadors restringits i els camps de text d’envolupament no es puguin instanciar a partir de càrregues de serde sense comprovacions del constructor.
- Hardened
recorderconfig and verifier boundaries: recorder startup rejects malformedrecorder_idvalues during config validation, phase-1 verification fail-closes on manifest structural mismatches, and verifier now imposa sostres de treball limitats explícits. - Hardened
recorderevidence-provider library boundaries with explicit limits de fallada tancada per a càrregues de treball de llista/consulta/materialització. - Hardened
recorder-storeSQLite connection dispatch with bounded queue capacity i semàntica de rebuig de saturació determinista. - Added system-test coverage for malformed identifiers, bounded CLI file input surfaces, secure signer-file policy, signer-rotation recovery/corruption behavior, contract CLI symlink safety, manifest structural tamper cases, SQLite corruption materialization failures, and single-open-segment CLI aplicació.
- Tancades totes les troballes registrades a Docs/security/audits/OSS_launch_0.md.
- Implemented
recorder-sidecaras a built-in HTTP/JSON boundary with fail-closed config validation, request auth/bounds controls, bounded queue/concurrency controls, structured error contract, and persistent idempotency semantics; updated trust boundaries, attack surfaces, mitigations, and residual risks to reflexar aquesta superfície d’execució. - Implemented generated sidecar API artifact coverage
(
sidecar.openapi/errors/enums/examples/compat) with fail-closed CI compatibility gates enforcing current pre-release-break/v1, enum-wire stability, codi d’error, estabilitat del registre i contractes d’idempotència de punts finals de mutació. - Consolidated sidecar runtime config semantics into a dedicated
recorder-sidecar-configcrate and wired sidecar runtime startup to consume its tipus de validació de configuració fail-closed. - Expanded generated contract scope to include sidecar config artifacts
(
config/sidecar.schema.json,config/sidecar.compat.json,config/sidecar.example.toml,config/sidecar.md) emitted byrecorder-contractdels helpers de projecciórecorder-sidecar-config. - Extended sidecar compatibility gates to fail closed on sidecar config Les portes de compatibilitat del sidecar ampliades fallaran tancades en cas de desviació de la configuració del sidecar i inconsistència entre artefactes (schema/compat/example/docs).
- Added sidecar integration/system validation for generated error-registry S’ha afegit la integració del sidecar/validació del sistema per a la compatibilitat del registre d’errors generat i la persistència de la idempotència del reinici/reproducció/conflicte.
Model de Amenaça Delta (2026-02-08)
- Added enterprise sidecar boundary mode with explicit fail-closed config
validation (
enterprise.mode, control-plane URL/token requirements, and requisit de seguretat del mode de token). - Added enterprise identity extraction boundary (
x-tenant-id,x-principal-id,x-authn-method, optional namespace) and fail-closed S’ha afegit un límit d’extracció d’identitat empresarial (x-tenant-id,x-principal-id,x-authn-method, espai de noms opcional) i un comportament d’admissió de fallada tancada en el context d’identitat malformat o absent. - Added pre-handler enterprise policy gate middleware that denies protected S’ha afegit un middleware de política d’empresa de pre-manipulador que nega les operacions protegides quan les comprovacions d’autenticació/control de quota del pla de control no estan disponibles o són denegades.
- Added managed-cloud writer-lease assertion gating for mutating operations
(
x-recorder-writer-lease=truerequerit quan està configurat). - Added explicit sidecar enterprise boundary hook emission to control-plane
(
/v1/enterprise/sidecar/hooks) atadmissionandresultphases with fail-closed behavior for successful protected operations when hook export falles. - Result: sidecar ingress now has an additional external dependency on enterprise control-plane availability/integrity; outage or invalid responses are handled as fail-closed admission denials and successful-hook export les fallades es tracten com a errors de sol·licitud tancats.
Model de Amenaça Delta (2026-02-08, Enduriment de la Prova i Preparació)
- Added explicit startup probe route (
GET /startup) to sidecar entry-point S’ha afegit una ruta de prova d’inici explícita (GET /startup) al punt d’entrada del sidecar, política d’inventari i bypass d’autenticació de la prova. - Added fail-closed readiness dependency modes (
storage_only,storage_and_enterprise) with config validation and control-plane readiness S’han afegit modes de dependència de preparació de fallada tancada (storage_only,storage_and_enterprise) amb validació de configuració i comprovacions de dependència de preparació del pla de control en modes habilitats per a empreses. - Added optional readiness fail-closed behavior when request admission/execution
S’ha afegit un comportament opcional de fallida tancada en la disponibilitat quan la capacitat d’admissió/execució de sol·licituds s’esgota (
request_capacity_exhaustedraó de disponibilitat). - Added explicit probe-priority middleware behavior:
/health,/startup, and/readybypass normal auth/policy/bounds request S’ha afegit un comportament de middleware de prioritat de sondatge explícit:/health,/startupi/readyeludeixen les portes normals d’autenticació/política/límits de sol·licitud per preservar l’observabilitat de l’orquestració durant la sobrecàrrega. - Added Docker system-test probe coverage validating containerized
/startupand/readybehavior before and after segment-open lifecycle transicions.
Model de Ameaça Delta (2026-02-08, continuació)
- Renamed enterprise boundary adapter implementation from
enterprise.rstocontrol_plane_bridge.rsto make the trust-boundary intent explicit S’ha canviat el nom de la implementació de l’adaptador de frontera d’empresa deenterprise.rsacontrol_plane_bridge.rsper fer explícit l’objectiu de la frontera de confiança (només pont de pla de control; sense autoritat de matemàtiques d’evidència). - Centralized sidecar enterprise ingress/header/hook vocabulary in
crates/recorder-sidecar/src/contract.rsand wired middleware/bridge paths to aquelles constants per reduir el risc de desviament de polítiques induït per la deriva. - Added conformance tests to ensure sidecar operation labels, identity headers, and hook boundary/outcome labels remain synchronized with control-plane vocabulari de contractes.
- Added cross-repo end-to-end enterprise lane coverage proving control-plane deny decisions fail closed at sidecar mutation boundaries while successful S’ha afegit cobertura de carrers d’empresa de final a final entre repositoris que demostra que les decisions de denegació del pla de control fallen tancades als límits de mutació del sidecar, mentre que els camins admesos amb èxit preserven els resultats de verificació d’evidències deterministes.
Model de Amenaça Delta (2026-02-08, Expansió CLI OSS)
- Added CLI operator command
recorder envelope record-with-attachmentswith S’ha afegit la comanda d’operador CLIrecorder envelope record-with-attachmentsamb validació de límits d’adjunt de fallada tancada per a fitxers i entrades base64 en línia. - Added CLI operator command
decision-gate ingest-fixturethat routes fixture inputs through productionrecorder-decision-gate-adapterintegrity and mapping polítiques. - Added CLI runtime config parity checks so malformed
recorder_idvalues fail closed duringconfig validateusing the same identity-shape constraints as temps d’execució del gravador. - Expanded CLI auto-seal boundary to include duration and combined policies, S’ha ampliat el límit d’auto-segellat de la CLI per incloure la durada i les polítiques combinades, amb un rebuig de valor zero que falla tancat tant per a llindars de comptatge com de durada.
- Added CLI query page bounds (default
1000, max10000) and deterministic JSON pagination contract (envelopes+next_cursor) to prevent unbounded materialització a la frontera de l’operador.
Model de Amenaça Delta (2026-02-10, SDK Facade + SDK Artifacts)
- Added first-party Rust SDK facade crate (
recorder-sdk) that composes existing recorder/adapter/provider/store/verifier boundaries without introducing new semàntica de protocol. - Added SDK builder trust boundary inputs (storage path, recorder and adapter identifiers, signer/trust-root injection, startup policy knobs) and required comportament de validació fallida-tancada heretat de les capes de gravador/proveïdor.
- Expanded generated-contract asset inventory and controls to include SDK projection artifacts (Docs/generated/recorder/sdk/types.json, Docs/generated/recorder/sdk/methods.json, Docs/generated/recorder/sdk/test_vectors.json, Docs/generated/recorder/sdk/manifest.json) with manifest-hash authority and aplicació de la verificació de deriva.
- Added SDK facade integration tests covering builder defaults, storage selecció, fluxos de registre/construcció/verificació, i consulta/recuperació/verificació de paritat del proveïdor.
Model de Amenaça Delta (2026-02-14, Divisió de la Via de Rendiment i Control de Capacitat Fixada)
- Added explicit perf-harness trust boundary semantics: fixed-workload regression artifacts and saturation-capacity artifacts are distinct evidence classes amb diferents decisions operatives.
- Added lane identity and workload metadata requirements to sidecar perf
artifacts (
lane,workload.*) so downstream gates can fail closed on context de rendiment perdut/ambigu. - Added pinned-runner conditional gate requirement for capacity artifacts:
when pinned release jobs are configured for capacity enforcement, missing
sidecar_capacityels informes es tracten com una condició de fallada tancada. - Added anti-sandbagging policy coverage for capacity floors to prevent
degradacions del llindar de
max_sustainable_rpssense governança explícita. - Added resource-exhaustion saturation test notes: capacity sweeps are allowed
to intentionally drive bounded
429and elevated latency to identify sustainable operating region and knee point without relaxing fail-closed comportament en temps d’execució.
Model de Ameaça Delta (2026-02-15, Governança del Flux de Treball i Esquema v2)
- Added canonical perf orchestration boundary (
scripts/perf/run.py) that normalizes matrix artifacts into schema-v2 per-suite reports with explicit metadades d’empremta del corredor i identitat de la pista. - Added baseline-governance update surface (
scripts/perf/update_baseline.py) requiring explicit sample-count/window/author/reason metadata on baseline actualitzar. - Added per-suite macrobench artifact paths
(
target/performance/stress/latest.json,target/performance/bundle/latest.json) to reduce ambiguity and prevent evidència sobreescriu la confusió en la triatge de rendiment.
Model de Ameaça Delta (2026-02-11, Superfície del SDK de Python)
- Added first-party Python sidecar SDK (
sdk/python) as a committed projection consumer de Docs/generated/recorder/sdk/{types,methods,test_vectors,manifest}. - Added Python SDK trust boundary for endpoint/token/idempotency/retry inputs i comportament de decodificació de resposta amb una postura de validació de fallada tancada.
- Added deterministic Python contract-constants generator that derives
generated_contract.pydirectament dels artefactes SDK generats canònics. - Added strict Python client controls for unknown error-code rejection, content-type validation, operation-local error-contract validation, and reutilització estable de la clau d’idempotència a través de reintents d’operacions mutables.
- Added Python SDK unit and system tests and wired repository orchestration
(
scripts/ci/generate_all.sh) per executar les portes de generació/comprovació/prova del SDK de Python.
Model de Ameaça Delta (2026-02-11, OSS Assurance WS1-WS3)
- Added deterministic verifier transcript artifact model
(
VerificationTranscript) and wired CLI export surface (bundle verify --verdict-transcript-output) for machine-verifiable evidència del paquet de verificació. - Added explicit OSS assurance command boundary
(
assurance startup,assurance trust-root,assurance gates) to provide fail-closed deployment assertions for startup verification depth, trust-root mode, i execució de la porta del contracte. - Added system-test coverage proving SQLite operation queue saturation is rebutjat fallit tancat amb un resum determinista de l’artifacte de sortida.
Model de Ameaça Delta (2026-02-13, Enduriment de Paritat de Bootstrap de Token Docker)
- S’ha eliminat la dependència del fitxer de token muntat en el host per al perfil de Docker sidecar.
- Added dedicated container bootstrap binary
(
recorder-sidecar-docker-bootstrap) that ingests token source material from Docker secret file/env input and writes runtime token file to configured ruta objectiu amb validació de fallada tancada i permisos només per al propietari. - Updated Docker Compose profile to use a Docker secret source and tmpfs token target mount, preserving explicit non-root UID/GID mapping for writable data i executar directoris.
- Expanded system-test Docker suite hardening checks to enforce comportament de bootstrap del token secret-source-to-tmpfs.
- Result: Windows host ACL variance no longer determines runtime token-file mode parity inside Linux containers because sidecar token file is now created en contenidor amb semàntica de permís determinista.
Model de Ameaça Delta (2026-02-13, Fase 1 Enduriment Estricte de Tipus de Mitjà)
- Replaced permissive sidecar media-type checks with strict fail-closed parser
comportament per a
Content-TypeiAccepta la frontera HTTP. - Sidecar request-body endpoints now enforce exact
application/jsonwith optionalcharset=utf-8; unknown parameters, malformed values, and non-UTF-8 els valors de charset són rebutjats ambunsupported_media_typeestable. - Sidecar response negotiation now enforces strict JSON-only
Acceptranges (application/jsonor*/*) with malformed/non-JSON ranges rejected via establenot_acceptable. - Centralized route media-type policy in
recorder-sidecar-configand projected that policy into generated sidecar OpenAPI/compat artifacts and CI contract portes, reduint el risc de desviació de temps d’execució/contracte en l’ampliació del límit del protocol.
Model de Amenaça Delta (2026-02-13, Fase 3 Superfície de Compatibilitat OTel)
- Added production OTel compatibility adapter crate
(
crates/recorder-otel-adapter) and sidecar ingest route (POST /v1/ingest/otel) com una nova frontera de xarxa hostil. - New OTel ingest boundary enforces strict JSON-only media policy, bearer auth, enterprise policy middleware, bounded admission/execution controls, timeout controls, and idempotency-key requirements consistent with other mutating rutes de sidecar.
- OTel adapter mapping is deterministic and fail-closed:
strict identifier/timestamp parsing, deterministic SHA-256-to-UUIDv7-shaped
IDs, deterministic event-type mapping (
otel.span,otel.log.<severity>), i projecció de càrrega limitada/retallada. - Added generated integration mapping contract artifacts for Decision Gate and OTel under Docs/generated/recorder/contracts/integrations/ with runtime/contract comprovacions de deriva en la cobertura de proves del generador.
- Added CLI operator parity command
recorder otel ingest-fixture, expanding operator input attack surface while preserving bounded fixture reads and comportament d’adaptador que falla tancat.
Model de Ameaça Delta (2026-02-13, Dependència del Pla de Control Durable de l’Empresa)
- Expanded enterprise dependency threat posture to include durable control-plane state backends (Postgres-backed fleet/governance/cloud-ops) hosted in Asset-Core i consumit pels camins d’admissió de l’empresa sidecar.
- Added explicit mutation-path outage fail-closed test coverage when control-
plane dependency becomes unavailable:
crates/recorder-sidecar/tests/enterprise_control_plane_e2e.rsandsystem-tests/tests/suites/sidecar_enterprise.rs. - Security effect: enterprise mode write paths deny on control-plane outage; no es permet un comportament de mutació de millor esforç/fail-open.
Model de Ameaça Delta (2026-02-14, Refactorització d’Ingesta de Writer Únic de Sidecar)
- Replaced direct mutating envelope handler writes with a bounded ingest queue
plus dedicated single-writer runtime (
IngestGateway/IngestWriterRuntime) that owns durable commit and stream-position assignació. - Added stream-scoped identity and ordering boundary to sidecar mutating and
query routes:
tenant_id + recorder_idnow define authoritative stream scope per a la comanda i la idempotència. - Added persistent stream-scoped idempotency table
(
idempotency_entries) with deterministic request-hash replay/conflict semàntica i TTL/cap de retenció limitat per flux. - Added writer/projection persistence surfaces in SQLite schema v2:
streams,idempotency_entries, andquery_projection_envelopes; startup now fails closed on non-v2 databases and requires a fresh DB for this pre-llançament trencament. - Removed mutating segment HTTP routes (
POST /v1/segments,POST /v1/segments/seal) from sidecar runtime, reducing external mutation superfície d’atac mentre es mantenen les rutes d’observabilitat del segment només de lectura.
Model de Amenaça Delta (2026-02-14, Finalització del Rendiment d’Escriptor Únic)
- Completed hot-path migration to writer-native sealing and single-transaction
SQLite micro-batch commits; mutating sidecar ingest no longer depends on
per-envelope
RecorderEngine::record_envelopecommits. - Added explicit SQLite durability/checkpoint tuning controls at sidecar config
boundary (
storage.sqlite_synchronous,storage.sqlite_wal_autocheckpoint_pages,storage.sqlite_busy_timeout_ms) with fail-closed validation andsynchronous=FULLsegur per defecte. - Updated segment observability contract:
GET /v1/segments/activenow returns paginated active-segment lists with stream identity (tenant_id,recorder_id), reducing ambiguity in fluxos de treball de roll/debug per stream.
Model de Ameaça Delta (2026-02-15, Fitxer de Configuració de Sidecar - Enduriment de Límits de Lectura)
- Hardened
recorder-sidecar-confighostile file-input boundaries to fail closed en fitxers de configuració/secret/clau de mida excessiva abans d’analitzar/utilitzar. - Added explicit bounded file-read ceilings at sidecar config boundary:
sidecar config file
<= 1 MiB, token/control-plane-token files<= 4096bytes, fitxer de clau de signatura<= 65536bytes. - Added unit coverage proving oversize config/token/control-plane-token/signer les entrades clau es rebutgen amb codis d’error tipats estables.
Model de Ameaça Delta (2026-02-15, Enduriment del Camí Secret Sidecar TOCTOU)
- Closed Unix and Windows token/control-plane-token path-check/use race windows
in
recorder-sidecar-configby opening secret files with no-follow/reparse-safe flags and applying validation to opened descriptors/handles before bounded llegeix. - Added enterprise-path parity tests proving symlink and world-readable els fitxers de token del control-plane són rebutjats i fallen tancats.
- Added fail-closed unsupported-platform handling for non-Unix/non-Windows targets per evitar un comportament de retrocés permissiu.
Model de Amenaça Delta (2026-02-15, gravadora-emmagatzematge Guàrdia de Corrupció de Segment Actiu)
- Hardened
recorder-storeactive-segment readback to fail closed when hostile l’estat persistit conté múltiples segments oberts. - Added deterministic tie-break ordering (
created_at, then segment UUID bytes) for segment listings across in-memory and SQLite backends to remove igual-timestamp no determinisme. - Hardened SQLite filter handling for explicit empty
segment_idsand envelopeIN-list filter values so empty vectors deterministically return no matches en comptes d’aparèixer errors de sintaxi SQL. - Added regression tests in
recorder-storecovering multi-open-segment corruption detecció, estabilitat de l’ordre amb caràcters de temps iguals i gestió del filtre de llista buida.
Model de Amenaça Delta (2026-02-15, CLI I18n Catàleg d’Integritat de Fortificació)
- Replaced permissive CLI localization behavior with build-validated,
fail-closed catalog generation (
crates/recorder-cli/build.rs) sourced from catàlegs de localització seguits per repositori (crates/recorder-cli/i18n/locales/*.toml). - Added strict controls that block build/test on localization drift:
required default locale
en, locale-tag uniqueness, mandatory provenance metadata (machineorhuman_reviewed), exact key parity across locales, i paritat exacta del conjunt de marcadors per a cada clau de missatge. - Added compile-fail misuse gates for typed i18n macro invocation
(
crates/recorder-cli/tests/i18n_compile_fail.rsand trybuild fixtures), prevenir l’ús incorrecte de claus desconegudes i marcadors de posició en la compilació. - Enforced no-silent-fallback rendering semantics: runtime now fail-closes i18n integrity violations (unknown key in compatibility path, placeholder mismatch, unresolved placeholder token) instead of fallback permissiu a ID de clau o anglès.
- Added explicit locale provenance runtime behavior: machine-provenance locales emit a deterministic operator notice, while JSON les sortides del mode màquina romanen neutrals respecte a la localització i estables a través de la selecció de la localització.