For agents, on top of README.md, which they read first.

  • BUCK is generated: edit Cargo.toml, reindeer.toml or fixups/, then re-buckify (reindeer --third-party-dir third-party buckify).
  • A crate whose build script links native code needs rustc_link_lib/rustc_link_search in its fixup (see ring), or its symbols go missing at the final link.
  • fixups/<crate>/ holds only fixups.toml, one per crate; they get no README pair (a mechanical shard, see the documentation rule). top/ gets none either: it is reindeer's placeholder crate root.
  • reindeer.toml's buckfile_imports loads cargo and buildscript_run from pg_major.bzl, not the prelude: those wrappers make pgrx's pgNN feature and bindgen's PGRX_PG_CONFIG_PATH follow //platforms:pgNN. Keep that load when editing the imports.
  • jevcrates/ is a git submodule of jevcrates (jev-protocol, jev-client, jev-mock), path dependencies in Cargo.toml. Never edit inside it here: change jevcrates, then move the gitlink (git -C third-party/jevcrates fetch && git -C third-party/jevcrates checkout <rev>, then commit the new gitlink). Its URL in .gitmodules is the relative ../jevcrates.git; keep it relative, or a clone from the lmjtfy site points the submodule at private GitHub and fails.
  • nix/package.nix parses this BUCK at eval. A reindeer upgrade that changes the http_archive block's shape fails the package build with "an http_archive in third-party/BUCK has an unexpected shape"; fix the match there.