Arquitectura de Recorder CLI i Fluxos de Treball de l’Operador
Audience: Engineers extending CLI behavior and operators automating Recorder amb sortida de màquina.
Taula de continguts
- Visió Executiva
- Superfície de Comandament i Ruteig
- Model de Resolució en Temps d’Execució
- Fluxos de treball operatius
- Model de Sortida i Localització
- Límits d’entrada i comportament de fallada tancada
- Semàntica del Codi de Sortida
- File per Fitxer Referència Creuada
Executive Overview
recorder és el límit operatiu per als fluxos de treball locals de Recorder. Orquestra recorder i recorder-store amb grups de comandes explícits i un mode JSON determinista per a l’automatització.
F:crates/recorder-cli/src/main.rs F:crates/recorder-cli/src/main_cli_types.rs F:crates/recorder-cli/src/commands.rs L19-L29 F:crates/recorder-cli/src/support.rs L19-L23
Superfície de Comandament i Ruteig
Grups de comandes de nivell superior:
recorder(operacions de segment i sobre)recorder envelope record-with-attachments(ingest amb coneixement d’adjunts),recorder signer(cicle de rotació de la clau de signatura explícita),consulta(recuperació d’envelopes),bundle(construir/verificar/inspeccionar),config(comprovacions de configuració en temps d’execució),contract(artifact de contracte generat generar/comprovar),assegurament(profunditat de startup, mode de confiança arrel i comprovacions de porta OSS),decision-gate(ingestió de fixture a través de l’adaptador de producció),otel(ingestió de fixture d’exportació JSON d’OTel a través de l’adaptador de producció),doctor(diagnòstics de magatzem i segment actiu).
F:crates/recorder-cli/src/main_cli_types.rs
L’arquitectura de dispatch utilitza routers de subcomandes explícits en lloc de coincidències de manipuladors implícits, amb les implementacions de comandes dividides per àrea de flux de treball. F:crates/recorder-cli/src/main.rs F:crates/recorder-cli/src/commands.rs L19-L29
Model de Resolució en Temps d’Execució
Les configuracions d’execució es resolen amb precedència:
- Flags de la CLI,
- fitxer de configuració opcional,
- valors per defecte.
Defaults importants:
store_path:recorder.dbrecorder_id:recorder-clischema_version: esquema actualauto_seal: cap a menys que s’especifiqui un recompte i/o durada explícitsquery.limit: per defecte1000, màxim10000security_profile:segur
Model d’execució del signant:
- càrrega de signers conscient del perfil (
secure,standard,dev), - requisit per defecte segur que necessita material de clau PKCS#8 xifrat,
- opt-down explícit per a la clau de text pla/seu de desenvolupament en
dev, - metadades de rotació persistides (
store_meta) amb comprovacions de consistència.
F:crates/recorder-cli/src/main.rs F:crates/recorder-cli/src/main_cli_types.rs F:crates/recorder-cli/src/support/runtime.rs L20-L122 F:crates/recorder-cli/src/support/runtime.rs L247-L556
Selecció del backend de la botiga:
- file-backed SQLite or in-memory SQLite. F:crates/recorder-cli/src/support/runtime.rs L124-L179
Fluxos de treball operatius
Els fluxos de treball representatius es mapegen directament als gestors de comandes:
- obrir/registrar/sellar/estat/llista cicle de vida del segment,
- sobres de registre amb fitxers d’adjunt i entrades base64 en línia (
record-with-attachments), - explicit key rotation (
recorder signer rotate) with deterministic rotació de claus explícita (recorder signer rotate) amb emissió d’evidènciasystem.adapter.key_rotateddeterminista, - consultes d’envelopes filtrades amb suport de cursor,
- construir el paquet a partir del JSON del selector, verificar (opcionalment amb la confiança arrel) i inspeccionar,
- generació/comprovació de projecció de contracte (
contract generate|check), - comprovacions de desplegament d’assegurances (
assurance startup|trust-root|gates), - Ingesta del transcrit/fixture de runpack de Decision Gate a través de l’adaptador de producció.
- Ingesta de fixture d’exportació JSON d’OTel a través de l’adaptador de producció.
F:crates/recorder-cli/src/commands/recorder.rs L20-L524 F:crates/recorder-cli/src/commands/query.rs L20-L88 F:crates/recorder-cli/src/commands/bundle.rs L20-L170 F:crates/recorder-cli/src/commands/admin.rs L20-L194
Les proves d’integració cobreixen fluxos de treball bàsics i casos de fallada tancada. F:crates/recorder-cli/tests/commands.rs F:crates/recorder-cli/tests/commands/core.rs F:crates/recorder-cli/tests/commands/query_and_rotation.rs F:crates/recorder-cli/tests/commands/attachments_and_dg.rs
Model de Sortida i Localització
Modes de sortida:
--json: càrregues estructurades deterministes per a l’automatització,- mode de text: missatges d’operador localitzats.
El contracte de consulta en mode JSON ara emet:
{"envelopes": [...], "next_cursor": ..., "applied_limit": ...}.
Les fallades en mode JSON emeten un sobre determinista:
{"error": "<message>"}.
Resolució de localització:
--langsubstitueixRECORDER_LANG,- supported locales are generated from catalog files under
crates/recorder-cli/i18n/locales/*.toml, - els valors de localització desconeguts fallen tancats amb una sortida no zero,
- la configuració regional per defecte es manté
ennomés quan la configuració regional no està especificada.
Integritat de localització garanteix:
- build-time catalog validation enforces locale-tag uniqueness, default-locale
presence, exact key parity against
en, and exact placeholder-set parity for cada clau a totes les localitzacions, - message templates are generated into typed keys/macros and translation table
codi (
OUT_DIR/i18n_generated.rs), - runtime translation paths are strict and fail closed on unknown keys, desajustament de conjunt de marcadors de posició, o marcadors de posició no resolts,
- no hi ha un retrocés silenciós als ID de clau o a l’anglès per a traduccions que falten,
- locale provenance metadata is mandatory (
machineorhuman_reviewed) and les màquines locals emeten un avís explícit d’execució, - JSON output payload contracts remain locale-neutral and stable across locale selecció.
Cobertura d’idiomes inclou:
recorderbinari principal,recorder_oss_assurance_checks,recorder_oss_assurance_packet.
F:crates/recorder-cli/src/main.rs F:crates/recorder-cli/build.rs F:crates/recorder-cli/i18n/locales/en.toml F:crates/recorder-cli/i18n/locales/ca.toml F:crates/recorder-cli/src/i18n.rs F:crates/recorder-cli/src/support/util.rs F:crates/recorder-cli/src/bin/recorder_oss_assurance_checks.rs F:crates/recorder-cli/src/bin/recorder_oss_assurance_packet.rs F:crates/recorder-cli/tests/i18n_compile_fail.rs F:crates/recorder-cli/tests/commands/core.rs
Límits d’entrada i comportament de fallada tancada
CLI imposa lectures de fitxers limitades:
- config: 1 MiB,
- càrrega útil JSON: 4 MiB,
- fitxer d’adjunt/payload en línia: 16 MiB,
- JSON del fixture de Decision Gate: 8 MiB,
- JSON de fixtures OTel: 16 MiB,
- selector JSON: 1 MiB,
- paquet JSON: 32 MiB,
- trust-root JSON: 1 MiB,
- fitxer de clau de signatura: 64 KiB,
- material de la frase de pas del signant: 1 KiB.
F:crates/recorder-cli/src/main.rs
Els inputs de mida excessiva són rebutjats abans de la seva anàlisi/processament. F:crates/recorder-cli/src/support/util.rs L225-L277
bundle verify pot carregar una arrel de confiança explícita, dirigir-la a Verifier::with_trust_root, i opcionalment exportar un JSON de transcripció de verificador determinista a través de --verdict-transcript-output. F:crates/recorder/src/verification_transcript.rs F:crates/recorder-cli/src/commands/bundle.rs L74-L116
assurance grup de comandes proporciona comprovacions d’assumpció OSS explícites:
assurance startupexecutes runtime bootstrap and startup-verification path comprovacions amb afirmacions de profunditat mínima opcionals,assurance trust-rootvalida les suposicions de parse/policy/key-set del trust-root,assurance gatesexecutescontract checkgate semantics directly. F:crates/recorder-cli/src/commands/assurance.rs
La cobertura de la prova del sistema ara valida:
- rebuig d’entrada de trust-root de config/selector/bundle de mida excessiva,
- rebuig d’entrada de clau/frase de pas de signant de mida excessiva,
- comportament de fallada tancada d’identificador malformat sense mutació del gravador,
- validació de la paritat de la forma recorder-id en mode JSON
config validate, - durada de l’auto-seal i comportament del cicle de vida combinat a través de fluxos de treball CLI reals,
record-with-attachmentssuccess roundtrip and hostile-input fail-closedrecord-with-attachmentscomportament d’èxit de viatge rodó i fallada tancada d’entrada hostil sense mutació del gravador,- query JSON pagination contract (
applied_limit+next_cursor) and consulta de paginació JSON del contracte (applied_limit+next_cursor) i guàrdies de fallada tancades per sobre del límit, - Comportament d’èxit i de discrepància de fallada estricta de
ingest-fixturede Decision Gate CLI, - Comportament d’ingestió d’esdeveniments d’OTel CLI
ingest-fixtureamb èxit i determinista per tipus d’esdeveniment, - aplicació de la política de fitxers signats segurs (symlink + permisos),
- recuperació de rotació del signant i comportament de fallada tancada de metadades corruptes,
- rebuig de l’enllaç simbòlic de contracte CLI output-root,
- hostile bundle-verify parse-boundary rejection for invalid attachment content type. F:system-tests/tests/suites/operations/query.rs F:system-tests/tests/suites/operations/config.rs F:system-tests/tests/suites/operations/locale.rs F:system-tests/tests/suites/operations/contract.rs F:system-tests/tests/suites/recorder.rs L333-L678 F:system-tests/tests/suites/security.rs F:system-tests/tests/suites/security_limits.rs F:system-tests/tests/suites/security_signer.rs F:system-tests/tests/suites/security_contract_bundle.rs F:system-tests/tests/suites/integration_decision_gate.rs F:system-tests/tests/suites/integration_decision_gate_ingest.rs
Semàntica del Codi de Sortida
- Els errors generals de comanda retornen el codi de sortida
1a través deemit_error. - JSON-mode command errors still return exit code
1with machine-parseable Els errors de comanda en mode JSON continuen retornant el codi de sortida1amb una càrrega útil{"error": ...}que es pot analitzar per màquina. bundle verifyretorna el codi de sortida2quan l’estat del veredicte ésInvàlid.
F:crates/recorder-cli/src/support/util.rs L343-L345 F:crates/recorder-cli/src/commands/bundle.rs L112-L114
File per Fitxer Referència Creuada
| Àrea | Fitxer | Notes |
|---|---|---|
| Entrada i dispatch de CLI | crates/recorder-cli/src/main.rs, crates/recorder-cli/src/main_cli_types.rs | Model Clap, flux de localització/bootstrap, routatge de dispatch de nivell superior. |
| Gestors de comandes | crates/recorder-cli/src/commands.rs | Agrega mòduls de gestors de grups de comandes. |
| Gestors de gravadors | crates/recorder-cli/src/commands/recorder.rs | Operacions de segment/envolta i lògica de rotació de signants. |
| Gestors de consultes i paquets | crates/recorder-cli/src/commands/query.rs, crates/recorder-cli/src/commands/bundle.rs | Filtres de consultes i fluxos de treball de construcció/verificació/inspecció de paquets. |
| Gestors d’administració | crates/recorder-cli/src/commands/admin.rs | Validació de configuració, diagnòstics de doctor, comandes de contracte. |
| Gestors d’integració | crates/recorder-cli/src/commands/integration.rs | Fluxos de treball d’ingestió de Decision Gate i OTel. |
| Helpers de runtime i utilitats | crates/recorder-cli/src/support.rs, crates/recorder-cli/src/support/runtime.rs, crates/recorder-cli/src/support/util.rs | Resolució en temps d’execució, política de signants, anàlisi, IO limitat, helpers d’output. |
| Catàleg i generació i18n | crates/recorder-cli/build.rs, crates/recorder-cli/i18n/locales/en.toml, crates/recorder-cli/i18n/locales/ca.toml, crates/recorder-cli/src/i18n.rs | Catàlegs de localització validades en la construcció, claus/macros tipades, metadades de procedència i renderització estricta sense fallback. |
| Binàries OSS auxiliars | crates/recorder-cli/src/bin/recorder_oss_assurance_checks.rs, crates/recorder-cli/src/bin/recorder_oss_assurance_packet.rs | Bootstrap de localització (--lang i RECORDER_LANG) i superfícies d’ús/error localitzades amb càrregues útils JSON neutres a la localització. |
| Proves d’integració de CLI | crates/recorder-cli/tests/commands.rs, crates/recorder-cli/tests/commands/helpers.rs, crates/recorder-cli/tests/commands/core.rs, crates/recorder-cli/tests/commands/query_and_rotation.rs, crates/recorder-cli/tests/commands/attachments_and_dg.rs | Cobertura de fluxos de treball de principi a fi per a la semàntica de CLI. |
| Integració del generador de contractes | crates/recorder-contract/src/lib.rs | Autoritat d’artifacte generat determinista consumida per les comandes de contracte de CLI. |
| Suite d’operacions de proves del sistema | system-tests/tests/suites/operations/mod.rs, system-tests/tests/suites/operations/query.rs, system-tests/tests/suites/operations/config.rs, system-tests/tests/suites/operations/locale.rs, system-tests/tests/suites/operations/contract.rs | Valida les comprovacions de paritat de validació de configuració i el comportament de paginació/limitació de JSON de consultes de contracte. |
| Suite de gravador de proves del sistema | system-tests/tests/suites/recorder.rs | Valida el comportament de comptatge/duració/cicle de vida combinat d’auto-segellament i enregistrament d’adjunts. |
| Suite de seguretat de proves del sistema | system-tests/tests/suites/security.rs, system-tests/tests/suites/security_support.rs, system-tests/tests/suites/security_limits.rs, system-tests/tests/suites/security_signer.rs, system-tests/tests/suites/security_contract_bundle.rs | Valida el comportament de límits de CLI tancats en fallida, hostilitat d’adjuncions, política de signants, recuperació de rotació, seguretat del camí del contracte i entrades hostils de paquets. |
| Suite de CLI de Decision Gate de proves del sistema | system-tests/tests/suites/integration_decision_gate.rs, system-tests/tests/suites/integration_decision_gate_support.rs, system-tests/tests/suites/integration_decision_gate_contract_shape.rs, system-tests/tests/suites/integration_decision_gate_ingest.rs | Valida l’èxit d’ingestió de fixtures d’adaptador de producció de CLI i el comportament de desajustament de fallida estricta. |
| Crate d’adaptador OTel | crates/recorder-otel-adapter/src/lib.rs | Implementació de mapeig d’ingestió JSON OTel de producció consumida per la comanda d’integració de CLI. |