Skip to content

Add an AGENTS.md like other DataFusion repositories #33

Description

@andygrove

Is your feature request related to a problem or challenge?

Several DataFusion repositories have an AGENTS.md that gives coding agents repository-specific instructions: apache/datafusion, apache/datafusion-comet, apache/datafusion-python and apache/datafusion-sqlparser-rs. The first three also symlink CLAUDE.md to it. apache/iceberg-rust has one as well, but it lives at the repository root, so it didn't move with this crate.

This repository has none. Agents working here have to work out how CI builds and tests the code, and they miss conventions that aren't visible from any single file.

Describe the solution you'd like

Add an AGENTS.md at the repository root, following the same pattern as the other DataFusion repositories, and symlink CLAUDE.md to it. Suggested content:

  • Checks to run before committing, matching CI: cargo fmt --all -- --check, cargo clippy --workspace --locked --all-targets -- -D warnings and cargo test --workspace --locked, plus the RAT license check once chore: add release infrastructure and rename crate back to iceberg-datafusion #32 lands.
  • Targeted test runs: a single sqllogictest schedule (cargo test -p iceberg-sqllogictest --test sqllogictests -- <schedule>), and updating expect_test snapshots with UPDATE_EXPECT=1.
  • Conventions that are easy to miss: the workspace denies unused_qualifications, rustfmt uses max_width = 90, the toolchain version is pinned in both rust-toolchain.toml and .github/actions/setup-rust/action.yml, and new files need the ASF license header.
  • Pointers to logic that spans several files:
    • the catalog → schema → table provider hierarchy;
    • the INSERT pipeline (project_with_partition → repartition → sort_by_partition → IcebergWriteExec → IcebergCommitExec);
    • filter pushdown being Inexact, so a converted predicate may match extra rows but must never drop a matching one.
  • The sqllogictest harness: how schedules relate to .slt files, tables addressed as default.default.<table>, and EXPLAIN expectations that are updated by hand.
  • The iceberg-rust dependency: iceberg is pinned to a git revision, and DataFusion, iceberg-rust and Parquet must resolve to the same Arrow version.

Additional context

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions