
Retained figures
Ordered artists become one reusable figure for live presentation or deterministic output.

Model diagnostics and retained interfaces on one GPU canvas.
Ui · Plot

Ordered artists become one reusable figure for live presentation or deterministic output.

Dark and light themes preserve the same composition, measurements, and artist contract.

Training curves, heatmaps, histograms, and image grids stay inside the OA data path.

Scalar fields and wireframes lower through the same compact Vulkan compositor.
Architecture
Ui is the retained command layer over Renderer. Viewer presents images and video interactively; Plot builds composable figures for training, evaluation, diagnostics, and image grids. The same scene can render live, become a semantic Image, or save headlessly through one engine-owned Vulkan compositor.
Language parity
The private OA development tree now presents matching Rust and Python Figure APIs. These are development previews; public qualification and release are still ahead.
1use oa::{Engine, plot};23let engine = Engine::new()?;4let loss = [1.0, 0.7, 0.4, 0.2];5let mut figure = plot::Figure::new(plot::FigureConfig {6 title: "Training".into(),7 ..Default::default()8});9let axes = figure.ax(0, 0);10axes.title("Cross entropy");11axes.x_label("optimizer step");12axes.y_label("loss");13axes.plot(&loss, plot::LineStyle::default());14figure.show(&engine)?;
Capabilities
Figures, viewers, images, text, and diagnostics share one retained presentation contract. The surface stays small enough to reason about while supporting live and headless model workflows.
Oa Library
Follow the same Engine, values, and explicit execution contract into another module.