API Reference¶
The Python surface of the framework, organized by module. Each page documents the concrete classes shipped in that module, the data types they consume and produce, and the abstract base class every concrete class subclasses.
Warning
Pre-implementation. Class signatures, parameter lists, and method names are
proposals. Once code lands, these pages will be regenerated from docstrings via
sphinx.ext.autodoc + autosummary. Hand-written prose lives in
Concepts; the API reference stays close to the code.
Design principles¶
The API is shaped by four rules that recur in every module page:
1. Four roles, kept separate. The Python surface has four kinds of public symbol. Conflating an extension contract with a sealed service is a documentation smell:
Role |
What it is |
Examples |
|---|---|---|
Data types |
The currency every layer speaks. Frozen dataclasses, schema-versioned, no behavior. |
|
Plugin interfaces (ABCs) |
The extension contract. One per layer, normative, auto-registering. Subclass to add a backend. |
BaseEmitter, BaseChannel, BaseSceneComposer, BaseLabeler, BaseAnnotator, BaseStore |
Concrete classes |
Implementations of a plugin ABC that users instantiate or select through config. |
LoRaEmitter, SionnaRT, DefaultSceneComposer, JointLabeler, ZarrStore |
Sealed services and facades |
A deliberately non-extensible operation or a stable, small user entry point. Their exact method or function contract is normative; callers compose them but do not subclass or register replacements. |
ExecutionEvidenceValidatorV1, rfgen.open_store, DoctorReportV1 |
A typical user instantiates concrete classes (or names them in YAML); a plugin author subclasses an ABC. Data types flow through both unchanged. A caller of a sealed service supplies typed input at its documented boundary instead of implementing a plugin interface. For example, the caller owns the declared SelectorInventoryV1 passed to the evidence validator; the validator owns the fixed cross-record and Git-policy checks, so it has no extension ABC.
2. ABCs are normative only at plugin boundaries. If a concrete plugin class behaves differently from its ABC, the ABC page is the source of truth and the concrete class is the bug. Concrete plugins are selected and swapped by config; there is no recommended default that lives in code. A sealed service or facade instead owns a fixed policy or import boundary. It is not made extensible merely to fit the plugin pattern.
3. You don’t subclass concrete classes. Composition, not deep inheritance. At a plugin boundary, write a new concrete class against the ABC, not a subclass of an existing one. At a sealed-service boundary, pass the documented typed input or compose the result. This keeps extension points explicit and prevents release-policy ownership from leaking into user implementations.
4. The reference is autogenerated. Once code lands, every class page in
this section is built from docstrings via sphinx.ext.autodoc. Hand-written
prose is restricted to the conceptual pages under Concepts;
this section stays close to the code so docs cannot drift from behavior.
Pre-implementation, the pages here are written by hand in the same shape
autodoc emits, so the eventual swap is mechanical.
Module map¶
Module |
Section |
What it contains |
|---|---|---|
|
|
|
|
Signal, SignalMetadata, SceneMetadata, Record, BBox, type aliases |
|
|
Pydantic models for the full config schema |
|
|
Concrete emitter classes (one per family) and the BaseEmitter ABC |
|
|
Layer 2 BaseChannel ABC, the |
|
|
|
|
|
|
|
|
Eight RX-side per-transformation concretes (mixer, IF filter, resampler, LNA noise, ADC, RX phase noise, RX IQ-imbalance, AGC) plus the |
|
|
Sealed calibration-profile, compiled-stage, deterministic processing, snapshot, and report contracts |
|
|
Sealed versioned material and antenna-pattern validation, public Sionna RT binding, and deterministic assignment receipts |
|
|
DefaultSceneComposer and the BaseSceneComposer ABC |
|
|
||
|
Per-template annotators, BaseInferenceClient implementations |
|
|
ZarrStore, WebDatasetStore, the BaseStore ABC |
|
|
Local, Ray, and Spark executors behind the BaseDistributedExecutor ABC |
|
|
Credential providers for cloud backends and LLM APIs |
|
|
Plugin discovery, registration, and entry-point loading |
|
|
Structured log sinks and observability hooks |
|
|
Immutable workstream, gate, scientific-validation, and chapter evidence records plus the semantic validator |
|
|
Versioned canonical run-manifest payloads, forward-compatible envelopes, verification reports, and packaged JSON Schema loaders |
|
|
Dataset-bound local manifest staging, immutable revisions, and compare-and-swap |
|
|
Read-only metadata, object-checksum, and bounded reproduction verification of a published manifest |
|
|
Closed Sigstore DSSE signing and verification boundary, identity policy, canonical in-toto statements, and typed fail-closed errors |
|
|
Offline verification of self-hashed release reports against caller-parsed SBOM, scan, signature-bundle, and provenance evidence |
|
|
Strict, immutable price, quota, provenance, resource-demand, and offline signed-admission-estimate contracts |
|
|
Canonical advertised capability, support-row, evidence, and release-publication contracts |
|
|
Signed five-sample baselines, fixed qualification gates, and PASS-only Wave 5 sealing |
|
|
Root |
|
|
BaseSampler, BaseCollator, and concrete sampler/collator classes for consumer-side training pipelines |
|
|
RfgenTorchDataset bridge for |
|
|
Exception hierarchy raised across the framework |
Each extensible module page contains its own ABC section alongside the concrete classes that implement it; there is no separate plugin-interfaces page. Pages for sealed services and facades instead document their fixed function, model, and validation boundaries.
How each module page is structured¶
Module pages follow the same shape, matching what sphinx.ext.autodoc produces:
Module summary - one paragraph on what the module covers.
Class index - one row per public class with family / backend tier / one-line note.
Per-class entries, in autodoc order:
Class signature with constructor parameters.
Class attributes (
family,supported_classes, …).Methods with signatures, parameter tables, return types, raises, example.
Schema - the Pydantic model the class accepts as
params.Notes for non-obvious behavior; See Also for cross-links.
ABC reference, when extensible - the ABC section on the same module page documents a plugin contract. A sealed-service or facade page documents its fixed function, model, and validation boundary instead.
See Also¶
Concepts - narrative descriptions of what each layer does.
Schemas & Contracts - on-disk formats, config schema, CLI surface.
Algorithms & Math - the math behind specific concrete classes.