Expand description
Conformance harness for frankenpandas — mechanically verifies that frankenpandas matches pandas behavior across the supported API surface, by running parallel computations and diffing results.
§Architecture
Conformance verification uses two complementary modes:
- Live oracle: spawn a Python subprocess running real
pandas, feed it the same inputs as frankenpandas, then diff the outputs. Picks up version drift and the “everything pandas exposes” surface area without authors having to encode each contract by hand. - Fixture replay: load packet fixtures (DataFrame / Series inputs + expected outputs captured from a known-good reference run) and compare frankenpandas’s output to the captured expectation. Fast, deterministic, runs in CI without needing a Python install.
OracleMode selects between the two; the harness falls back
to fixture mode when the live oracle isn’t reachable so the
CI build still produces a green/red signal.
§Top-level entry points
HarnessConfig: harness setup — fixture-dir paths, oracle mode, suite-level options.run_smoke: smoke-test entry point. Runs the smallest-possible packet set against both modes and emits aHarnessReport.HarnessReport: aggregated suite verdict with per-caseCaseResultentries.SuiteOptions: per-suite knobs (parallelism, timeout, continue-on-fail vs fail-fast).
§Fixture format
Packet fixtures encode “operation X on inputs Y produces output Z” in a shape both modes can consume:
PacketFixture: top-level fixture record. Tagged with provenance (FixtureProvenance), references its inputs (FixtureDataFrame/FixtureSeries), theFixtureOperationto apply, and the expected outputs (FixtureExpectedDataFrame/FixtureExpectedSeries/FixtureExpectedAlignment/FixtureExpectedJoin).FixtureCategoricalColumn/FixtureMultiIndex: typed sub-fixtures for the harder-to-encode inputs.FixtureColumnAssignment/FixtureColumnRename: structured operation payloads for the assign / rename variants ofFixtureOperation.FixtureJoinType: enum tag for join-style operations.FixtureOracleSource: where the expected output came from (live oracle capture vs author-curated golden file).
§Case verdicts
Per-case results carry rich diagnostic detail so failures map cleanly back to the offending input shape:
CaseResult: one operation’s verdict.CaseStatus: pass / fail / xfail / skip.DriftLevel: how big the divergence was (within-tolerance, numeric drift, structural mismatch).ComparisonCategory: what the diff bucket was (dtype / value / index / column-order / metadata).RequirementLevel: MUST / SHOULD / MAY tagging for the coverage matrix output (matches the testing-conformance-harnesses skill’s classification).
§Cross-crate relationships
Built on top of fp-frame, fp-io, fp-join, fp-groupby, fp-expr.
Forwards the asupersync cargo feature down to fp-runtime.
Test-only — no production callers should depend on this crate.
Structs§
- Artifact
Id - Deterministic artifact identifier for cross-referencing forensic artifacts.
- Asupersync
Codec Evidence - Case
Evidence Entry - Case
Result - Category
Count - Per-category drift count in a summary.
- CiForensics
Report - Machine-readable CI forensic report for G1..G8 gate failures.
- CiGate
Forensics Entry - Gate-level forensic result with stable identifiers and replay metadata.
- CiGate
Result - Result of a single CI gate evaluation.
- CiPipeline
Config - Configuration for a CI pipeline run.
- CiPipeline
Result - Result of a full CI gate pipeline run.
- Compat
Closure Attestation Summary - Compat
Closure Case Log - Compat
Closure Coverage Report - Compat
Closure E2eScenario Report - Compat
Closure E2eScenario Step - Compat
Closure Final Evidence Pack - Compat
Closure Final Evidence Packet - Compat
Closure Final Evidence Paths - Compat
Closure Migration Manifest - Compat
Closure Reproducibility Ledger - Decode
Proof Artifact - Typed decode proof artifact matching
decode_proof_artifact.schema.json. - Differential
Report - Differential report: extends PacketParityReport with structured drift details.
- Differential
Result - Full differential comparison result for a single fixture case.
- Differential
Validation LogEntry - Drift
Record - A single drift observation from a differential comparison.
- Drift
Summary - Aggregate drift statistics across all differential results.
- E2eConfig
- Configuration for the E2E orchestrator.
- E2eReport
- Final result of an E2E orchestration run.
- Failure
Digest - A concise failure summary for a single test case.
- Failure
Forensics Report - Human-readable failure report for an E2E run.
- Failure
Surface Entry - Machine-readable per-case failure surface for packet/e2e assertion output.
- Fault
Injection Validation Entry - Fault
Injection Validation Report - Fixture
Categorical Column - Fixture
Column Assignment - Fixture
Column Rename - Fixture
Data Frame - Fixture
Expected Alignment - Fixture
Expected Data Frame - Fixture
Expected Join - Fixture
Expected Series - Fixture
Generation Request - Fixture
Multi Index - Fixture
Provenance - Fixture
Series - Forensic
Event - A single forensic log entry with timestamp.
- Forensic
Log - Accumulator for forensic events during an E2E run.
- Generated
Fixture Bundle - Harness
Config - Harness
Report - Live
Oracle Report - Aggregate outcome for the dedicated live-oracle parity test slice.
- Noop
Hooks - Default no-op hooks.
- Packet
Drift History Entry - Packet
Fixture - Packet
Gate Result - Packet
Parity Report - RaptorQ
Packet Record - RaptorQ
Scrub Report - RaptorQ
Sidecar Artifact - Sidecar
Integrity Result - Result of verifying a single packet’s RaptorQ sidecar integrity (Rule T5).
- Suite
Options - Written
Packet Artifacts
Enums§
- Case
Status - CiGate
- CI gate identifiers matching the G1..G8 pipeline from COVERAGE_FLAKE_BUDGETS.md.
- Comparison
Category - Comparison dimension in the differential taxonomy.
- Compat
Closure Scenario Kind - Decode
Proof Status - Outcome of a decode drill.
- Drift
Level - Drift severity classification following frankenlibc fail-closed doctrine.
- Fault
Injection Classification - Fixture
Join Type - Fixture
Operation - Fixture
Oracle Source - Forensic
Event Kind - Forensic event kinds emitted during E2E orchestration.
- Harness
Error - Oracle
Mode - Requirement
Level - Per-fixture conformance requirement level, mirroring RFC 2119 conventions (MUST / SHOULD / MAY).
Traits§
- Lifecycle
Hooks - Lifecycle hooks for E2E orchestration. Default implementations are no-ops.
Functions§
- append_
phase2c_ drift_ history - build_
case_ evidence_ entries - build_
case_ evidence_ entries_ for_ report - build_
ci_ forensics_ report - Build a deterministic, machine-readable forensic report from a CI pipeline run.
- build_
compat_ closure_ coverage_ report - build_
compat_ closure_ e2e_ scenario_ report - build_
compat_ closure_ final_ evidence_ pack - build_
differential_ report - Build a DifferentialReport from pre-computed DifferentialResults.
- build_
differential_ validation_ log - build_
failure_ forensics - Build a failure forensics report from an E2E report.
- build_
failure_ surface_ entries - build_
failure_ surface_ entries_ for_ report - enforce_
packet_ gates - evaluate_
ci_ gate - Evaluate a single CI gate using Rust-native checks where possible.
- evaluate_
parity_ gate - fuzz_
column_ arith_ bytes - Structure-aware fuzz entrypoint for
Column::binary_numeric()invariants. - fuzz_
common_ dtype_ bytes - Structure-aware fuzz entrypoint for the
fp-typescommon-dtype lattice. - fuzz_
csv_ parse_ bytes - Structure-aware fuzz entrypoint for the
fp-ioCSV reader. - fuzz_
dataframe_ eval_ bytes - Structure-aware fuzz entrypoint for
DataFrame.eval(...). - fuzz_
dataframe_ from_ dict_ bytes - Structure-aware fuzz entrypoint for
DataFrame::from_dict(...). - fuzz_
dataframe_ from_ records_ bytes - Structure-aware fuzz entrypoint for
DataFrame::from_records(...). - fuzz_
dataframe_ from_ series_ bytes - Structure-aware fuzz entrypoint for
DataFrame::from_series(...). - fuzz_
dataframe_ merge_ bytes - Structure-aware fuzz entrypoint for
merge_dataframes(...). - fuzz_
dataframe_ op_ chain_ bytes - Stateful fuzz entrypoint: apply a sequence of
DataFrameoperations. - fuzz_
excel_ io_ bytes - Structure-aware fuzz entrypoint for the
fp-ioExcel reader. - fuzz_
feather_ io_ bytes - Structure-aware fuzz entrypoint for the
fp-ioFeather reader. - fuzz_
fixture_ parse_ bytes - Structure-aware fuzz entrypoint for the
PacketFixtureJSON boundary. - fuzz_
format_ cross_ round_ trip_ bytes - Structure-aware fuzz entrypoint for cross-format Arrow-backed IO parity.
- fuzz_
groupby_ agg_ bytes - Structure-aware fuzz entrypoint for
DataFrameGroupByaggregation dispatch. - fuzz_
groupby_ sum_ bytes - Structure-aware fuzz entrypoint for
groupby_sum()invariants. - fuzz_
index_ align_ bytes - Structure-aware fuzz entrypoint for
fp-indexouter alignment semantics. - fuzz_
ipc_ stream_ io_ bytes - Structure-aware fuzz entrypoint for the
fp-ioArrow IPC stream reader. - fuzz_
join_ series_ bytes - Structure-aware fuzz entrypoint for
join_series()invariants. - fuzz_
json_ io_ bytes - Structure-aware fuzz entrypoint for the
fp-ioJSON and JSONL readers. - fuzz_
parallel_ dataframe_ bytes - Concurrency-oriented fuzz entrypoint: exercise an
Arc<DataFrame>shared across multiple reader threads. - fuzz_
parquet_ io_ bytes - Structure-aware fuzz entrypoint for the
fp-ioParquet reader. - fuzz_
parse_ expr_ bytes - Structure-aware fuzz entrypoint for
fp_expr::parse_expr(...). - fuzz_
pivot_ table_ bytes - Structure-aware fuzz entrypoint for
DataFrame::pivot_table(...). - fuzz_
query_ str_ bytes - Structure-aware fuzz entrypoint for
fp_expr::query_str(...). - fuzz_
query_ str_ with_ locals_ bytes - Structure-aware fuzz entrypoint for
fp_expr::query_str_with_locals(...). - fuzz_
read_ sql_ bytes - Structure-aware fuzz entrypoint for SQL read APIs against an in-memory SQLite connection.
- fuzz_
rolling_ window_ bytes - Structure-aware fuzz entrypoint for
Series::rolling(window, min_periods). - fuzz_
scalar_ cast_ bytes - Structure-aware fuzz entrypoint for
fp-typesscalar casting semantics. - fuzz_
semantic_ eq_ bytes - Structure-aware fuzz entrypoint for
Scalar::semantic_eq(...)invariants. - fuzz_
series_ add_ bytes - Structure-aware fuzz entrypoint for
Series::add()alignment semantics. - generate_
fixture_ pilot_ bundle - generate_
raptorq_ sidecar - optional_
index_ label_ to_ scalar - run_
ci_ pipeline - Run the full CI gate pipeline with fail-fast and forensics.
- run_
differential_ by_ id - Run a differential suite filtered by packet ID.
- run_
differential_ suite - Run a differential suite over all matching fixtures with taxonomy-based comparison.
- run_
e2e_ suite - Run the full E2E orchestration pipeline with lifecycle hooks and forensic logging.
- run_
fault_ injection_ validation_ by_ id - run_
packet_ by_ id - run_
packet_ suite - run_
packet_ suite_ with_ options - run_
packets_ grouped - run_
raptorq_ decode_ recovery_ drill - run_
smoke - verify_
all_ sidecars_ ci - CI gate function: verify all packet sidecars under an artifact root directory. Returns Ok with results if all pass, Err with failures if any fail.
- verify_
packet_ sidecar_ integrity - Verify Rule T5 for a single packet directory: parity_report.json must have a corresponding raptorq sidecar and decode proof with matching hashes.
- verify_
raptorq_ sidecar - write_
case_ evidence_ jsonl - write_
compat_ closure_ e2e_ scenario_ report - write_
compat_ closure_ final_ evidence_ pack - write_
differential_ validation_ log - write_
failure_ surface_ jsonl - write_
fault_ injection_ validation_ report - write_
grouped_ artifacts - write_
packet_ artifacts