You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This issue tracks the introduction of the oxide-signals crate, which provides a typed, versioned canonical envelope for all observability data emitted by cuda-oxide and related tooling.
Motivation
Currently, cuda-oxide lacks a unified observability layer. Traces, metrics, logs, and audit evidence are emitted ad-hoc without standardised identity, provenance, or lifecycle metadata. Downstream collectors cannot correlate signals across execution boundaries or enforce retention/compliance policies.
Proposed Solution
The oxide-signals crate implements the OIS (Oxide Instrumentation Signal) canonical envelope v1.0:
Typed envelope -- SignalEnvelope<Payload> with required fields (signal_id, exec_id, tenant_id, actor, reproducibility, payload) and optional metadata (signature, lineage_refs, retention_class, channel)
URN-based identity -- All identifiers use urn:ois: scheme with validated prefixes
Builder API -- SignalEnvelope::builder() with compile-time optional fields and runtime required-field validation
OpenTelemetry integration -- Native mapping to OTEL spans, attributes, links, and span kinds via otel module
High-level emitter -- SignalEmitter<T: Tracer> wraps any OTEL tracer for one-line signal emission
JSON Schema -- Full schemars support for schema generation and validation
Signal Classes
Class
OTEL SpanKind
Use case
trace
Internal
Kernel launch, memory copy
metric
Internal
GPU utilization
log
Internal
Compiler diagnostics
decision
Server
Policy engine verdicts
receipt
Producer
Build artifact receipts
evidence
Producer
SAST / attestation evidence
stream
Consumer
Async data streams
state
Internal
Runtime state snapshots
policy
Server
Governance rules
Acceptance Criteria
Crate compiles with zero warnings (cargo check)
All tests pass (cargo test -p oxide-signals -- 18 unit + 1 doctest)
README.md with quick-start example
SCHEMA.md documenting the canonical envelope specification
enhancementNew feature or requestTBDNot yet triaged; scope or disposition undecidedlogsLogging, diagnostics, or verbose output
1 participant
Converted from issue
This discussion was converted from issue #31 on June 12, 2026 10:02.
Heading
Bold
Italic
Quote
Code
Link
Numbered list
Unordered list
Task list
Attach files
Mention
Reference
Menu
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
Uh oh!
There was an error while loading. Please reload this page.
Summary
This issue tracks the introduction of the
oxide-signalscrate, which provides a typed, versioned canonical envelope for all observability data emitted bycuda-oxideand related tooling.Motivation
Currently,
cuda-oxidelacks a unified observability layer. Traces, metrics, logs, and audit evidence are emitted ad-hoc without standardised identity, provenance, or lifecycle metadata. Downstream collectors cannot correlate signals across execution boundaries or enforce retention/compliance policies.Proposed Solution
The
oxide-signalscrate implements the OIS (Oxide Instrumentation Signal) canonical envelope v1.0:SignalEnvelope<Payload>with required fields (signal_id,exec_id,tenant_id,actor,reproducibility,payload) and optional metadata (signature,lineage_refs,retention_class,channel)urn:ois:scheme with validated prefixesSignalEnvelope::builder()with compile-time optional fields and runtime required-field validationotelmoduleSignalEmitter<T: Tracer>wraps any OTEL tracer for one-line signal emissionschemarssupport for schema generation and validationSignal Classes
traceInternalmetricInternallogInternaldecisionServerreceiptProducerevidenceProducerstreamConsumerstateInternalpolicyServerAcceptance Criteria
cargo check)cargo test -p oxide-signals-- 18 unit + 1 doctest)Cargo.toml)Related
SCHEMA.mdincrates/oxide-signals/src/otel.rsfor OTEL mapping detailsAll reactions