Record mode now preserves the real driver's connect() signature on the auto-patched module (functools.wraps). Callers that introspect inspect.signature(driver.connect).parameters to choose their call convention — notably adbc-poolhouse distinguishing db_kwargs={...} "Family A" drivers (Snowflake, PostgreSQL, BigQuery, FlightSQL) from **kwargs "Family B" drivers (DuckDB, SQLite) — previously saw the patched (**kwargs) signature, mis-detected a Family-A driver as Family B, and flat-unpacked its options. The real driver then received db_kwargs=None, surfacing (for Snowflake) as OperationalError: 260000: account is empty. The bug affected record mode only against Family-A drivers; replay never opens a real connection, and Family-B drivers genuinely want flat unpacking, so it was previously invisible.
Cursor fetch methods (fetch_arrow_table, fetchall, fetchone, fetchmany, and fetchallarrow via delegation) now raise ProgrammingError when called before execute(), matching real ADBC. They previously returned an empty result or None. Migration: call a fetch method only after execute().
Full ADBC Cursor API parity for ReplayCursor (FETCH-01..05, DBAPI-01..07, ADBCX-01..04)
Arrow and DataFrame fetch methods: fetch_record_batch, fetch_arrow, fetchallarrow, fetch_df, fetch_polars (pandas and polars imported lazily, no packaging extras)
DBAPI completeness: iteration via next, rownumber, connection, no-op setinputsizes/setoutputsize, and intentional NotSupportedError for nextset/callproc
ADBC extension methods: record mode delegates to the real cursor; replay derives adbc_execute_schema from the cassette, no-ops adbc_cancel/adbc_prepare, and raises NotSupportedError for adbc_ingest, partition methods, and adbc_statement
Introspection parity test (PARITY-01) asserting the full real Cursor surface is covered and failing loudly when ADBC adds a member
Cursor Surface reference page (DOC-01) documenting every member and its replay-mode behavior