REVIEW 3 major objections 5 minor 35 references
Not Your Usual Type(s): Data contracts as types across languages and engines
T0 review · 3 major / 5 minor · reviewed 2026-08-02 · deepseek-v4-flash
Pith's one-line read Bauplan's SDK 2.0 treats data contracts as type annotations enforced at three pipeline stages to prevent common schema failures.
desk verdict A clear, well-written design proposal for typed data contracts in a lakehouse SDK, but the evidence is anecdotal and the cross-engine enforcement guarantee is underspecified. read the letter →
The pith
A machine-rendered reading of the paper's core claim, the machinery that carries it, and where it could break.
The reading
What carries the argument
The load-bearing mechanism is the TableSchema annotation: a Python class whose attributes are Annotated column descriptors (type, Required, Enum, Doc, and Schema['col'] lineage references). The paper maps these annotations to two enforcement axes: the syntax (how contracts are written in Python and SQL) and the semantics (how a verifier interprets them at the local, planning, and runtime stages). The paper explicitly supports 'the subset of Arrow types that intersects with Iceberg' so that one declared schema can be enforced identically across engines.
What would settle it
Run a pipeline that declares a column type supported by Arrow but not by Iceberg (for example, certain nested or extension types) and observe that either the contract cannot be declared, is silently ignored at one stage, or is enforced differently across engines. If such a case exists in common usage, the claim of uniform cross-engine enforcement fails.
Extended reading notes
Core claim
The central claim is that a single declared schema object—a TableSchema class whose columns carry types, constraints, documentation, and explicit lineage references—can serve as a portable contract for a DAG node's boundary. The authors show that by attaching these schemas to Python function signatures and SQL query comments, and by validating them in three distinct stages (local static checking, control-plane graph reasoning over catalog state, and runtime checks on Arrow buffers), the system can reject incompatible compositions before execution and refuse to persist invalid outputs. This turns the pipeline's node interfaces into checked types, in the same spirit as dynamic-language type an
Load-bearing premise
The whole design rests on the assumption that the intersection of Arrow types and Iceberg types covers the types real pipelines actually use, so a single contract can be enforced identically across languages and engines.
Editorial extensions
If this is right
- Contract violations are caught at the earliest possible stage: local type errors before a run, composition errors at planning time, and physical schema mismatches before any data is persisted.
- Because contracts are expressed over Arrow-compatible types, any runtime that consumes Arrow can enforce the same boundaries, making the contract layer portable across engines.
- Documentation and lineage become machine-readable artifacts: they are persisted into Iceberg table metadata, so downstream agents can retrieve them to translate business questions into SQL.
- Declarative constraints such as non-null and enum values can be checked in-flight on Arrow buffers without materializing separate validation suites.
- With pre- and postcondition-style annotations, some semantic guarantees, such as 'no new nulls from an aggregation', become derivable statically.
Reading between the lines
- A natural stress test is to expand the supported type intersection: if production schemas frequently use types outside the Arrow/Iceberg overlap, enforcement will silently weaken for those columns, and composability claims will hold only for a curated subset.
- The same annotation syntax could become a cross-platform contract language if other composable systems adopted the Arrow/Iceberg subset; the paper stops short of proposing a standardization, but the design is a candidate.
- One could extend Step 2 validation with dataflow analysis of filter predicates, so that constraints like 'tclass is non-null because upstream filters nulls' are inferred rather than only declared, further shifting checks left.
- The persistence of annotations in Iceberg metadata opens the possibility of contract drift over time: if upstream schemas evolve, downstream contracts need a versioning story, which the paper does not fully develop.
Signed reviews
Editorial analysis
A structured set of objections, weighed in public.
Referee Report
Summary. The paper argues that pipeline-node boundaries in composable lakehouse DAGs are weakly specified, leading to avoidable schema and semantic failures at runtime. It presents the design of Bauplan SDK 2.0, in which users attach typed contracts — TableSchema classes with column types, constraints, documentation, and lineage — to SQL and Python node inputs and outputs. These contracts are enforced at three lifecycle stages: local type checking in the client, graph-based consistency checks in the control plane, and Arrow-boundary validation on workers before persistence. The paper claims this design prevents common failure modes (dropped columns, unexpected nulls, type changes, semantic drift) and enables composability across languages, engines, and agents, with contracts expressed over an Arrow/Iceberg common type subset. The manuscript is a design/position paper with code illustrations and no measurements.
Significance. The design is timely and the central idea — reusing dynamic-language type annotations as portable data contracts across DAG boundaries — is a useful framing for the composable lakehouse community. The paper clearly articulates the three enforcement stages and provides concrete, runnable-looking syntax for contracts, lineage, and semantic metadata. The open-source artifact and the explicit mapping onto production failure modes are strengths. If the enforcement semantics were fully specified and evaluated, the contribution could be valuable to practitioners and to later formal work on contract-aware pipeline planning. However, the paper currently states several strong guarantees — especially identical enforcement across arbitrary Arrow-compatible runtimes — that go beyond what is demonstrated or specified.
major comments (3)
- [§4.4, §3.2] The central composability claim — that any Arrow-compatible runtime "can enforce the same input and output boundaries" (§4.4) — is not established by Arrow type compatibility. Arrow defines a data representation, not a validation semantics. The paper does not specify how nullability, enum constraints, or allowed casts are interpreted in a way that would be identical across engines. In particular, §3.2 says the worker "applies the required cast before persistence" only "where permitted," but "permitted" is never defined. Two runtimes can both consume/produce Arrow yet reject different inputs or apply different casts, so the same contract can yield different outcomes. Please provide a formal, shared validation specification and cast-permission rules, or weaken the claim to say that contracts are portable only when engines implement a defined common validation layer.
- [§3.1] The paper states that supported column types are "the subset of Arrow types that intersects with Iceberg" without enumerating this subset or justifying its sufficiency. This is load-bearing because the promise of identical enforcement across Python, SQL, and alternative engines depends on every user-relevant type being representable and checkable at every boundary. Common cases such as decimal precision/scale, timestamp with/without time zone, nested lists/structs, and binary vs. string are not discussed, and it is unclear how Iceberg and Arrow incompatibilities in these areas are resolved. Please include a concrete type-mapping table and state what happens for unsupported types (error, ignore, or best-effort).
- [§2.2, §4.1] The empirical motivation and claimed impact are asserted rather than demonstrated. The paper says "millions of production jobs" show recurring schema mismatches, but no incident counts, error rates, or workload analysis are provided. §4.1 revisits failure modes with plausible examples, but mapping each failure to a design feature is not evidence that the design reduces failures in practice. There is also no comparison against dbt model contracts or Dagster asset checks, though the related-work section positions the contribution relative to them. Please either add quantitative evidence (even a small case study or telemetry summary from the stated production experience) or clearly reframe the paper as a design proposal with validation deferred to future work.
minor comments (5)
- [§3.2 (Step 1)] The claim that local type checkers "catch obvious mismatches" is overstated for column-level contracts: treating Table as having the same interface as pyarrow.Table can prevent calling invalid methods, but it does not statically verify that the returned Arrow table satisfies the declared column names and types, and SQL nodes are explicitly not checked at Step 1. Please clarify that Step 1 checks only Python-side interface usage, not contract satisfaction.
- [§4.3] The "Dafny-style" example (no nulls in col1 implies no nulls in COUNT-GROUP-BY output) assumes the implementation of the aggregation is semantically faithful to SQL. Some engines can produce nulls for grouping keys or use custom UDFs. State the assumption explicitly or add a caveat about non-standard runtimes.
- [§1, formatting] There are several minor typos and spacing issues: "prima faciethe" in the introduction, "asdbt" in §2.1, and inline math that is occasionally malformed (e.g., "with 𝑅𝐸𝑃𝐿𝐴𝐶𝐸 semantics" in §2.1.1). These should be cleaned up.
- [Artifact] The artifact link points to a GitHub repository, but the paper contains no instructions for reproducing or exploring the SDK examples. Since the paper advertises an open-source SDK, please add a short artifact guide or point to the relevant path/version.
- [References] The related-work comparison is brief and would benefit from a small table contrasting Bauplan SDK 2.0 with dbt contracts, Dagster asset checks, Pandera, Patito, and Great Expectations along axes such as multi-language support, pre-execution checks, and Arrow-boundary enforcement.
Circularity Check
No circularity: SDK 2.0 is a design/experience report; there is no derivation chain, no fitted prediction, and the self-citations are contextual background, not load-bearing.
full rationale
This paper is an engineering design and operational retrospective rather than a derivation with predictions or fitted parameters. There are no equations whose outputs equal their inputs, and no quantity is fit to data and then renamed as a forecast. The central proposal—schema objects interpreted as contracts at local, planning, and runtime stages—is presented as a design; Section 4.1 maps the previously described failure modes to enforcement mechanisms, which is a requirements-to-design correspondence, not a circular inference from the design to itself. Heavy self-citation (e.g., [26,27,30] for Bauplan overview, [21,22,24,29] for agentic lakehouse/GitLake context) appears throughout, but these citations supply background and motivation; the design's internal consistency and the three-stage enforcement logic do not reduce to any cited claim. The stated limitations—the Arrow/Iceberg type-subset restriction in Section 3.1, the undefined 'permitted' cast in Section 3.2, and the speculative 'common subset' of annotations in Section 4.4—undermine the generality of the composability guarantee, but they are validity/generality gaps, not circularity. Therefore, no circular step can be exhibited, and the appropriate score is 0.
Assumptions & free parameters
assumptions (5)
- domain assumption Schema mismatches at node boundaries are a recurring and operationally important class of failure.
- domain assumption The subset of Arrow types that intersects with Iceberg is sufficient to express the schemas users need.
- domain assumption Pydantic-style class-based annotations are ergonomic enough that users and agents will annotate code.
- domain assumption Fail-fast, three-stage enforcement is preferable to runtime-only checking.
- domain assumption Table and column annotations can be persisted in Iceberg table metadata and read back via MCP/LLM.
Cite this review
Pith. "Pith review of Not Your Usual Type(s): Data contracts as types across languages and engines." pith.science (2026). https://pith.science/paper/T2P6I2HH
@misc{pith2026260713339,
author = {Pith},
title = {Pith review of: Not Your Usual Type(s): Data contracts as types across languages and engines},
year = {2026},
howpublished = {\url{https://pith.science/paper/T2P6I2HH}},
note = {Machine review of arXiv:2607.13339}
}
read the original abstract
Composable data systems promise to let developers combine languages, engines, and catalogs without sacrificing a coherent user experience. In practice, however, pipeline-node boundaries remain weakly specified: transformations exchange tables through schemas that are often checked late, enforced unevenly across languages, and disconnected from the semantics business users care about. Based on over a year of operating millions of jobs in Bauplan, we share the design principles behind our new SDK, which treats data contracts as types for a composable, multi-language lakehouse. Users, whether humans or agents, annotate input and output tables with schema objects that encode column types, constraints, documentation, and lineage; Bauplan then interprets these annotations at different points in the execution lifecycle. We show how this design addresses common production failures, and how an ''everything-as-code'' philosophy enables both deterministic and non-deterministic reasoning over data flows across languages and engines.
Figures
Reference graph
Works this paper leans on
-
[1]
Apache. 2024. Iceberg. https://github.com/apache/iceberg
2024
-
[2]
Divya Bhadauria, Hazar Harmouch, Felix Naumann, Divesh Srivastava, and Lisa Ehrlinger. 2026. A Catalog of Data Errors. arXiv:2604.09277 [cs.DB] https://arxiv.org/abs/2604.09277
arXiv 2026
-
[3]
Luca Bigon, Jacopo Tagliabue, and Semih Salihoğlu. 2025. DAG Lakehouse Planning with an Ephemeral and Embedded Graph Database. InVLDB 2025 Workshop: Third International Workshop on Composable Data Management Sys- tems. https://www.vldb.org/2025/Workshops/VLDB-Workshops-2025/CDMS/ CDMS25_13.pdf
2025
-
[4]
[n.d.].Pydantic Validation
Samuel Colvin, Eric Jolibois, Hasan Ramezani, Adrian Garcia Badaracco, Terrence Dorsey, David Montague, Serge Matveenko, Marcelo Trylesinski, Sydney Runkle, David Hewitt, Alex Hall, and Victorien Plot. [n.d.].Pydantic Validation. https: //github.com/pydantic/pydantic
-
[5]
Pandera Contributors. [n.d.]. Pandera: The Open-Source Framework for Dataset Validation. https://pandera.readthedocs.io/. Accessed: 2026-07-14
2026
-
[6]
Patito Contributors. [n.d.]. Patito: A Data Modelling Layer Built on Top of Polars and Pydantic. https://patito.readthedocs.io/. Accessed: 2026-07-14
2026
-
[7]
Ryan Curtin and Jacopo Tagliabue. 2025. The Deconstructed Warehouse: An Ephemeral Query Engine Design for Apache Iceberg. InVLDB 2025 Work- shop: Third International Workshop on Composable Data Management Sys- tems. https://www.vldb.org/2025/Workshops/VLDB-Workshops-2025/CDMS/ CDMS25_12.pdf
2025
-
[8]
Dagster Labs. 2026. Welcome to Dagster. https://docs.dagster.io/
2026
Show all 35 references
-
[9]
dbt Labs, Inc. 2026. What is dbt? https://www.getdbt.com/product/what-is-dbt
2026
-
[10]
Luca Di Grazia and Michael Pradel. 2022. The evolution of type annotations in python: an empirical study. InProceedings of the 30th ACM Joint European Soft- ware Engineering Conference and Symposium on the Foundations of Software Engi- neering(Singapore, Singapore)(ESEC/FSE 20...
2022
-
[11]
Harald Foidl, Valentina Golendukhina, Rudolf Ramler, and Michael Felderer. 2024. Data pipeline quality: Influencing factors, root causes of data-related issues, and processing problem areas for developers.Journal of Systems and Software207 (2024), 111855. https://doi.org/10.10...
2024
-
[12]
Great Expectations. 2026. Great Expectations Core. https://github.com/great- expectations. Open-source data quality validation framework
2026
-
[13]
Xiangpeng Hao, Nikhil Nayak, Proteet Paul, JP Guthi, Andrew Lamb, Jacopo Tagliabue, Andrea Arpaci-Dusseau, and Remzi Arpaci-Dusseau
-
[14]
Ruanqianqian Huang, Avery Reyna, Sorin Lerner, Haijun Xia, and Brian Hempel
-
[15]
Clément Labadie, Christine Legner, Markus Eurich, and Martin Fadler. 2020. FAIR Enough? Enhancing the Usage of Enterprise Data with Data Catalogs. In2020 IEEE 22nd Conference on Business Informatics (CBI), Vol. 1. 201–210. https://doi.org/10.1109/CBI49978.2020.00029
2020
-
[16]
Semih Salihoğlu Luca Bigon, Jacopo Tagliabue. 2025. DAG lakehouse planning with an ephemeral and embedded graph database.Proceedings of Workshops at the 51th International Conference on Very Large Data Bases(2025)
2025
-
[17]
Dipankar Mazumdar, Jason Hughes, and JB Onofre. 2023. The Data Lakehouse: Data Warehousing and More. arXiv:2310.08697 [cs.DB] https://arxiv.org/abs/ 2310.08697
2023 arXiv
-
[18]
Pedro Pedreira, Orri Erling, Konstantinos Karanasos, Scott Schneider, Wes McKin- ney, Satya R Valluri, Mohamed Zait, and Jacques Nadeau. 2023. The Composable Data Management System Manifesto.Proc. VLDB Endow.16, 10 (June 2023), 2679–2685. https://doi.org/10.14778/3603581.3603604
2023
-
[19]
Michael Rumiantsau and Ivan Fokeev. 2026. Semantic Layers for Reliable LLM- Powered Data Analytics: A Paired Benchmark of Accuracy and Hallucination Across Three Frontier Models. arXiv:2604.25149 [cs.AI] https://arxiv.org/abs/ 2604.25149
2026 arXiv
-
[20]
Skill issues
Nicole Rose Schneider, Davide Ghilardi, Giacomo Piccinini, and Jacopo Tagli- abue. 2026. "Skill issues”: data-centric optimization of lakehouse agents. arXiv:2606.01185 [cs.AI] https://arxiv.org/abs/2606.01185
2026 arXiv
-
[21]
Weiming Sheng, Jinlang Wang, Manuel Barros, Aldrin Montana, Jacopo Tagli- abue, and Luca Bigon. 2026. Building a Correct-by-Design Lakehouse. Data Contracts, Versioning, and Transactional Pipelines for Humans and Agents. arXiv:2602.02335 [cs.DC] https://arxiv.org/abs/2602.02335
2026
-
[22]
Weiming Sheng, Jinlang Wang, Manuel Barros, Aldrin Montana, Jacopo Tagli- abue, and Luca Bigon. 2026. GitLake: Git-for-data for the agentic lakehouse. arXiv:2607.08319 [cs.DB] https://arxiv.org/abs/2607.08319
2026 arXiv
-
[23]
Shuo Sun, Shixin Zhang, Jiwei Yan, Jun Yan, and Jian Zhang. 2025. Co-Evolution of Types and Dependencies: Towards Repository-Level Type Inference for Python Code. arXiv:2512.21591 [cs.SE] https://arxiv.org/abs/2512.21591
2025
-
[24]
Jacopo Tagliabue. 2026. Querying Everything Everywhere All at Once: Su- pervaluationism for the Agentic Lakehouse. arXiv:2603.13380 [cs.DB] https: //arxiv.org/abs/2603.13380
2026
-
[25]
Jacopo Tagliabue, Hugo Bowne-Anderson, Ville Tuulos, Savin Goyal, Romain Cledat, and David Berg. 2023. Reasonable Scale Machine Learning with Open- Source Metaflow.ArXivabs/2303.11761 (2023)
2023 arXiv
-
[26]
Jacopo Tagliabue, Tyler Caraza-Harter, and Ciro Greco. 2024. Bauplan: Zero-copy, Scale-up FaaS for Data Pipelines. InProceedings of the 10th International Workshop on Serverless Computing(Hong Kong, Hong Kong)(WoSC10 ’24). Association for Computing Machinery, New York, NY, USA...
2024
-
[27]
Jacopo Tagliabue, Ryan Curtin, and Ciro Greco. 2024. FaaS and Furious: abstrac- tions and differential caching for efficient data pre-processing . In2024 IEEE Inter- national Conference on Big Data (BigData). IEEE Computer Society, Los Alamitos, CA, USA, 3562–3567. https://doi...
2024
-
[28]
Jacopo Tagliabue and Ciro Greco. 2024. Reproducible data science over data lakes: replayable data pipelines with Bauplan and Nessie. InProceedings of the Eighth Workshop on Data Management for End-to-End Machine Learning(Santiago, AA, Chile)(DEEM ’24). Association for Computin...
2024
-
[29]
Proof-Carrying
Jacopo Tagliabue and Ciro Greco. 2025. Safe, Untrusted, "Proof-Carrying" AI Agents: toward the agentic lakehouse. arXiv:2510.09567 [cs.AI] https://arxiv. org/abs/2510.09567
2025
-
[30]
Jacopo Tagliabue, Ciro Greco, and Luca Bigon. 2023. Building a Serverless Data Lakehouse from Spare Parts.ArXivabs/2308.05368 (2023). https://api. semanticscholar.org/CorpusID:260775634
2023 arXiv
-
[31]
Ciro Greco Tapan Srivastava, Jacopo Tagliabue. 2025. Eudoxia: a FaaS scheduling simulator for the composable lakehouse.Proceedings of Workshops at the 51st International Conference on Very Large Data Bases(2025)
2025
-
[32]
Alexander van Renen, Dominik Horn, Pascal Pfeil, Kapil Eknath Vaidya, Wenjian Dong, Murali Narayanaswamy, Zhengchun Liu, Gaurav Saxena, Andreas Kipf, and Tim Kraska. 2024. Why TPC is not enough: An analysis of the Amazon Redshift fleet. InVLDB 2024
2024
-
[33]
Zaharia, Ali Ghodsi, Reynold Xin, and Michael Armbrust
Matei A. Zaharia, Ali Ghodsi, Reynold Xin, and Michael Armbrust. 2021. Lake- house: A New Generation of Open Platforms that Unify Data Warehousing and Advanced Analytics. InConference on Innovative Data Systems Research
2021
-
[2025]
arXiv:2512.14012 [cs.SE] https://arxiv.org/abs/2512.14012
Professional Software Developers Don’t Vibe, They Control: AI Agent Use for Coding in 2025. arXiv:2512.14012 [cs.SE] https://arxiv.org/abs/2512.14012
2025
-
[2026]
https://xiangpeng.systems/_app/immutable/assets/squeeze-cache.CgwfvKO- .pdf
SqueezeCache: Beyond ”Optimal” Eviction for Data Analyt- ics. https://xiangpeng.systems/_app/immutable/assets/squeeze-cache.CgwfvKO- .pdf
Reviewed August 2, 2026 · model on record in the stance chip above.
Discussion (0). Continue with ORCID to comment.