Minimal model
Every model declares the YAML format version and a model name. This model has
one entity type, Task, with two events. Events are emitted at most once per
entity instance unless the model says otherwise.
YAML model
quent: alpha
model: minimal
entities:
Task:
events:
started: {}
ended: {}
Instrumentation API
The context provides an observer for each entity type. Calling .handle() on
an observer creates a handle for a new entity instance and assigns it a fresh
UUID. The handle exposes one method per event.
Every context is created with an exporter, which determines where emitted
events go. This example uses Noop, an exporter that discards every event. It
keeps the example focused on the generated API without creating files or
starting another service. Applications replace Noop with an exporter that
stores or sends their events.
// SPDX-FileCopyrightText: Copyright (c) 2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved.
// SPDX-License-Identifier: Apache-2.0
#[allow(unused)]
mod instrumentation {
include!(concat!(env!("OUT_DIR"), "/minimal.rs"));
}
use instrumentation::{Context, Minimal, Noop, Task};
fn main() -> Result<(), Box<dyn std::error::Error>> {
let context = Context::<Minimal>::try_new(Noop)?;
let mut task = context.observer::<Task>().handle();
task.started()?;
task.ended()?;
Ok(())
}
The two events have no declared ordering constraint, so either event may be emitted first.