// SPDX-License-Identifier: BSD-3-Clause

//! Unified corpus-sweep runner.
//!
//! The runner opens each APK exactly once per run, builds an
//! [`extractor::ApkContext`] over the parsed state, and dispatches to
//! every registered [`extractor::CorpusExtractor`]. Facts land in a
//! single append-only sqlite ledger keyed by
//! `(run_id, apk_sha256, extractor_id, key)`.
//!
//! This module provides the extractor trait + per-APK context
//! and the object-safe dispatch wrapper. The orchestrator layer (sqlite ledger,
//! per-shard runner, work-queue parser) is separated.

pub mod extractor;

pub use extractor::{ApkContext, CorpusExtractor, DynCorpusExtractor};
