A verification framework for Apache Iceberg implementations: language-neutral conformance fixtures, and the runners that exercise them.
The Iceberg specification is prose. Each implementation parses and serializes it on its own, so they drift. Tests maintained in isolation in each implementation cannot catch this, because each checks its own reading of the spec against itself. A shared misreading stays green and often surfaces only as a post-release bug report.
Expected values here are derived from the spec, not copied from an implementation, so a fixture catches both implementation bugs and genuine spec ambiguity. The expected value is single-sourced, so a corrected reading is corrected in one place.
Initial scope is read conformance. A reference writer emits each fixture, and every implementation verifies that it consumes the fixture correctly. Writer conformance is a later phase.
This repository validates artifacts, not behavior. Engine query results, live protocol behavior, and physical encoding choices such as compression codec and file format writer version are out of scope. Any spec-valid encoding is valid.
Adoption is by self-election and is incremental. An implementation pins this repository to a commit, runs the surfaces it opts into, and bumps that pin deliberately. There is no central conformance gate and no pass/fail matrix across implementations.
TODO: CONTRIBUTING.md, covering repository layout, fixture format, and how to add or correct a fixture.
Licensed under the Apache License, Version 2.0.
Fixture files are test data and carry no license header, per the ASF Source Header and Copyright Notice Policy, which exempts “test data for which the addition of a source header would cause the tests to fail”. Every other file carries the standard ASF source header.