“Header” extraction for a Solidity source file: every byte before
the first contract / interface / library / abstract-contract
declaration. By construction this captures the leading SPDX
comment, pragma line(s), every import statement, and any blank
lines or comments interleaved with them — exactly the slice the
harness agent needs to imitate when authoring a new test file.
Tree-sitter extraction of state variables and inheritance specifiers, mirroring
cg::extract_repo_contracts_functions but yielding storage-shaped records rather than
callgraph-shaped ones. The output is project-local: contract ids match
crate::cg::ExtractedContract::id and inheritance is resolved by name within the same
project. Names that don’t resolve (3rd-party imports, etc.) are dropped silently.