Package-level declarations
Types
The default SnapshotExtractor: a vendored, runtime SerialDescriptor walk (design §4, spike #6). It reads compatibility-bearing facts straight off the compiled descriptor — the highest-fidelity source, seeing @SerialName, isElementOptional, nullability, @JsonNames, enum values, sealed subtypes, and SerializersModule-resolved open polymorphism.
How the set of checked root types is decided when none are listed explicitly (issue #115). Filtering applies to scanned types only: classpath-manifest entries and explicit type lists are deliberate acts and always win.
Reads the compatibility-bearing settings straight off a user's real Json instance (Json.configuration) into a SnapshotConfig (design §6).
The program the Gradle serialkompatExtract task launches on the target project's runtime classpath (design §4). Running on that classpath is what lets it Class.forName the project's @Serializable types, obtain their real compiled serializers, and walk the descriptors at highest fidelity.
Builds a Snapshot from compiled @Serializable SerialDescriptors — the anti-corruption boundary between kotlinx-serialization and the pure engine. The rest of the tool depends only on Snapshot, so a future compiler-plugin extractor (Approach C) can drop in behind this interface without touching the differ, classifier, or rules (design §3–§4).