Generació de Contractes de Recorder i Arquitectura de Projecció
Executive Overview
recorder-contract és el generador/comprovador determinista canònic per a artefactes de projecció de Recorder. Emet sortides d’esquema/contracte/exemple/glossari/tooltip sota Docs/generated/recorder/, ara incloent artefactes de projecció SDK sota Docs/generated/recorder/sdk/, i aplica controls de deriva que fallen tancats.
La generació de tooltips és ara metadades de projecció de classe mundial amb:
- manifest de tooltip compatible amb versions anteriors (
tooltips.json), - catàleg de termes ric (
tooltips.catalog.json), - pointer/token bindings for code blocks and JSON examples
vinculacions de punters/token per blocs de codi i exemples de JSON (
tooltips.annotations.json), - glossari markdown (
glossary.md) generat de la mateixa font de termes.
Autoritat d’Artifacte
Codi del generador autoritatiu:
crates/recorder-contract/src/lib.rscrates/recorder-contract/src/contract_generation.rscrates/recorder-contract/src/contract_generation_artifacts.rscrates/recorder-contract/src/contract_generation_schema.rscrates/recorder-contract/src/contract_generation_samples.rscrates/recorder-contract/src/contract_generation_sdk_types.rscrates/recorder-contract/src/contract_generation_sdk_sidecar.rscrates/recorder-contract/src/contract_generation_sdk_vectors.rscrates/recorder-contract/src/sidecar_api.rscrates/recorder-contract/src/sidecar_api/openapi.rscrates/recorder-contract/src/sidecar_api/artifacts.rscrates/recorder-contract/src/sidecar_api/specs/mod.rscrates/recorder-contract/src/tooltips.rscrates/recorder-contract/src/tooltips_base_terms.rscrates/recorder-contract/src/tooltips_builders.rs
Autoritat generada arrel:
Docs/generated/recorder/
Autoritat del manifest de màquina:
index.json inclou la versió del contracte més metadades de hash SHA-256 per a cada artefacte. Quan hi ha artefactes de l’API sidecar presents, es fan complir les portes de compatibilitat dels artefactes generats mitjançant scripts/ci/sidecar_contract_gates.py.
Modes de Generador
recorder-contract admet dos modes deterministes:
GenerateMode::Generate- Regenera artefactes i reescriu l’arrel de sortida.
- Elimina fitxers inesperats obsolets sota l’arrel de sortida.
- Fails closed if output-root traversal encounters symlinks, hard-linked fitxers d’artefactes, o tipus d’entrada de sistema de fitxers no compatibles.
GenerateMode::Check- Els errors es tanquen en faltar fitxers, desplaçament de bytes o fitxers inesperats.
- Fails closed if expected paths resolve through symlinked roots/components, fitxers no regulars, o fitxers d’artifacte enllaçats de manera rígida.
Integració CLI:
generar contracte de gravaciócomprovació del contracte de gravació
Model de Determinisme
Els controls de determinisme inclouen:
- ordenació d’artefactes estable a través de mapes/conjunts ordenats,
- codificació JSON canònica a través de JCS,
- hash SHA-256 explícit per a les entrades del manifest,
- comparació de bytes en mode de comprovació contra fitxers compromesos.
Projecció de Schema Conscient de les Restriccions
La generació d’esquemes és en dues etapes:
- inferir la forma estructural a partir d’artefactes de mostra deterministes,
- aplicar restriccions de domini autoritzades mitjançant la superposició de JSON-pointer.
Les superposicions de restriccions inclouen:
- polítiques estrictes de forma de text UUID per a tots els camps d’ID,
- restriccions de cadena hostil i longitud màxima per a camps d’identificador/text,
- política estricta de regex per tipus d’esdeveniment i límit de longitud,
- política de regex
key_idestricta (^[0-9a-f]{64}$), - restriccions de matriu de bytes de longitud fixa per als camps de hash/signatura,
- representacions explícites nullable per a camps opcionals,
- full
BundleSelectoralgebra projection (BySegment,BySegments,ByTrace,ByTimeRange,ByEnvelopeIds,ByFilter, recursive projecció algebraica completaBundleSelector(BySegment,BySegments,ByTrace,ByTimeRange,ByEnvelopeIds,ByFilter, recursiuComposite) a través de l’esquema$defs.
La projecció falla tancada si falten els camins de punter esperats mentre s’apliquen restriccions.
Conjunt d’Artifacts Produïts
Fitxers emes actuals v1:
index.jsonschemas/envelope.schema.jsonschemas/segment.schema.jsonschemas/bundle.schema.jsoncontracts/adapter.jsoncontracts/provider.jsoncontracts/integrations/decision_gate.mapping.jsoncontracts/integrations/otel.mapping.json- glossari.md
tooltips.json- tooltips.catalog.json
- tooltips.annotations.json
examples/envelope.jsonexamples/segment.jsonexamples/bundle.jsonapis/sidecar.openapi.jsonapis/sidecar.errors.jsonapis/sidecar.enums.jsonapis/sidecar.examples.jsonapis/sidecar.compat.jsonconfig/sidecar.schema.jsonconfig/sidecar.compat.jsonconfig/sidecar.example.tomlconfig/sidecar.mdsdk/types.jsonsdk/methods.jsonsdk/test_vectors.jsonsdk/manifest.json
Conformitat i Validació
recorder-contract les proves d’unitat validen:
- determinisme de generació repetida,
- consistència del hash/manifesta de bytes de fitxer,
- els exemples generats es validen contra esquemes generats,
- el catàleg de tooltip inclou tots els noms dels mètodes de contracte d’adaptador/proveïdor,
- cobertura de termes bàsics de classe mundial requerida,
- els punters del catàleg de tooltip es resolen contra els artefactes JSON generats,
- les vinculacions d’annotations de tooltip només fan referència a les claus de termes definides,
- schema/runtime invariance for
key_id, hostile text fields, and identifier invariància de l’esquema/runtime per akey_id, camps de text hostils i restriccions de longitud màxima d’identificador. - emissió d’artefactes sidecar i inclusió de manifest.
- consistència de l’error del registre del sidecar i de la línia base de compatibilitat.
- consistència del contracte d’idempotència OpenAPI/compat del sidecar.
- consistència de l’artifacte de configuració del sidecar (enllaç de esquema/compat/exemple/docs).
- sidecar OpenAPI component typing strength for
BundleandVerificationVerdict(contractes d’objecte no flexibles, amigables amb generadors). - Emissió d’artefactes SDK i inclusió de manifest (
types/methods/test_vectors/manifest). - Declaracions de script requerides al manifest de l’SDK i consistència del registre de llenguatge objectiu.
- SDK type projection hardening (field-level constraints + OpenAPI component bindings) and SDK method projection hardening (request/response schema refs, error/enum contract linkage, auth/idempotency metadata) for adapter/proveedor/sidecar superfícies.
- Cobertura de mètodes SDK/vectors de prova per a superfícies bàsiques d’adaptador/proveïdor/sidecar.
- Integration mapping contract drift checks for Decision Gate and OTel artifacts generats contra constants d’execució de l’adaptador.
- Sidecar media-type contract drift checks ensuring runtime policy-derived request media allowlists are projected consistently in OpenAPI and artifacts de compatibilitat.
recorder-contract proves dedicades a la seguretat del camí validen:
- el mode de generació rebutja arrels d’output enllaçades amb symlink,
- el mode de generació rebutja els camins fills enllaçats simbòlicament sota l’arrel de sortida,
- el mode de generació rebutja els fitxers d’artifacte esperats enllaçats de manera dura,
- el mode de verificació informa sobre el desplaçament de bytes per a artefactes modificats,
- el mode de comprovació rebutja els fitxers d’artifacte esperats amb enllaços durs,
- el mode de comprovació rebutja els fitxers d’artifacte esperats enllaçats simbòlicament.
Orquestració i CI
Punt d’entrada d’orquestració d’un sol comandament:
scripts/ci/generate_all.sh
Comportament:
generate: regenerate contract artifacts + regenerate Python SDK contract constants (sdk/python/generate.sh) + run sidecar contract gates + regenerar la documentació de cobertura de proves.check: run contract drift check + Python SDK drift/unit/system gates (sdk/python/check.sh,sdk/python/test.sh) + sidecar contract gates + docs drift check (fallar tancat).- Optional perf matrix mode: if
RECORDER_PERF_MATRIX=1(or legacyRECORDER_SIDECAR_PERF_GATE=1), execute debug/test + release perf suites viascripts/ci/perf_matrix.pyand enforce release gate policy viascripts/ci/perf_gate.pycontra contractes de referència compromesos.
Els fluxos de treball CI executen això en les portes de qualitat requerides.
Límits de Transferència de Projecció
Política de transferència i propietat del glossari de Website/i18n:
Docs/roadmap/recorder_generated_contract_sync_and_glossary_policy.md
Això defineix la presència de fitxers requerits, la verificació de hash, l’estabilitat de la ruta i la propietat d’un sol origen del glossari/tooltip.