Public API compatibility status
This page inventories the current public Rust surfaces and the evidence that exists for them. Lifecycle labels describe executable truth at the current revision; they are not promises of semantic-version stability.
Evidence boundary
The workspace under compat/current-head/ contains four independent,
publish = false consumers. They use path dependencies into the same checkout
and share a separate lockfile for third-party dependency resolution. Their
tests build public APIs without running a scan or making any network request.
This is same-revision source-compatibility evidence only. It does not:
- select or validate a v1 Scanner SDK/plugin baseline;
- compare the current API with an accepted previous Venom revision;
- promise a stable Rust ABI (Rust libraries do not expose such a promise here);
- test separately published crates from a registry;
- demonstrate an independent downstream integration or external adoption.
Lifecycle inventory
| Public surface | Feature closure | Lifecycle | Current evidence and boundary |
|---|---|---|---|
Default termivar-core evidence, reasoning, ontology, outcome, predicate, and typed RunReport contracts |
termivar-core with no features |
Stable candidate | The core consumer builds validated identity, confidence, unknown-outcome, and stop-reason values. “Stable candidate” is an inventory classification, not an accepted compatibility baseline. |
| Historical configuration, event, raw HTTP/result, and stringly finding records | termivar-core/legacy-contracts |
Legacy | Quarantined behind a non-default feature and intentionally absent from the core consumer. New integrations should not adopt it. |
Standard single-subject decision runtime and bounded exact-origin WebAssessmentRuntime |
termivar-scanner/scanning |
Preview | The deterministic consumer builds the opt-in web-review runtime from its checked profile but never calls analyze; therefore the fixture sends no request. |
venom.scan-profile/v1, AssessmentItem, and runtime-owned AssessmentRunReport projection |
termivar-scanner/scanning plus reporting for the completed report |
Preview | The consumer checks the versioned profile/capability surface and compiles a renderer function that accepts only an already completed typed assessment report. It cannot manufacture runtime completion truth. |
| Bounded JSON, CSV, HTML, and Markdown report renderers | termivar-scanner/reporting |
Preview | The deterministic consumer compiles ReportGenerator::generate_assessment and verifies format negotiation. Rendering does not author findings or upgrade dispositions. |
ScannerSdk, ScannerBuilder, ScanPhase, and the ordered legacy runner |
termivar-scanner/legacy-scanner |
Legacy facade | A dedicated consumer proves only that an empty historical scanner can be built through the public facade at the same revision. The feature still admits historical phase contracts and raw compatibility-client authority; it is not the default deterministic product or a stable SDK baseline. |
Native plugin API 0.2 (Plugin, registry, limits, host context, broker, and observation recorder) |
termivar-scanner/plugins |
Preview | The plugin consumer registers an API-0.2 implementation without executing it. Its execute signature can stage a PluginObservation; it cannot return a finding, severity, verifier outcome, or confirmation. Native plugins are trusted in-process code, not a sandbox. |
| Lua host surface | termivar-scanner/lua |
Experimental | Bounded, process-local and explicitly enabled. It is not composed into the default scan and is outside the current-head consumer set. |
| Process-local distributed coordinator | termivar-scanner/distributed |
Experimental | No durable transport, persistence, or real distributed control plane is claimed. It is outside the current-head consumer set. |
| Platform/service models, detection/ML records, monitoring, compliance, and threat-intelligence catalogs | Their explicit non-default features | Experimental or legacy compatibility surface | These opt-in library records do not make an API listener, dashboard, durable service, feed runtime, or production detector part of the default product. They are outside the current-head consumer set. |
ScannerSdk therefore remains a Legacy facade, while the deterministic
runtime, typed assessment/report contracts, and plugin API 0.2 remain
Preview. No surface in this inventory is declared v1-stable.
Reproducing the compile evidence
Run these commands from compat/current-head/:
cargo test --locked -p termivar-current-head-core-consumer
cargo test --locked -p termivar-current-head-deterministic-assessment-consumer
cargo test --locked -p termivar-current-head-scanner-sdk-consumer
cargo test --locked -p termivar-current-head-plugin-api-0-2-consumer
Each command isolates one declared feature closure. The nested Cargo.lock
must be updated deliberately when the current checkout changes its dependency
resolution. A later compatibility baseline must add an accepted prior-version
fixture and explicit deprecation policy before it can support a cross-version
claim.