# AGENTS.md — native/

Conventions for the native tree. Root [`AGENTS.md`](../AGENTS.md) still
applies; this file adds only what is specific to `native/`.

- CoreBluetooth and WinRT Node-API addons are built for the **exact**
  Node/Electron ABI and architecture that loads them. The prebuild matrix and
  its hashes (`native/PREBUILDS.json`) are produced by the release workflow —
  see [`RELEASE.md`](../RELEASE.md); never hand-edit the hash manifest.
- Native and private backend protocols are versioned and fail closed. A
  protocol change is a versioned change on both sides of the boundary, guarded
  by `pnpm test:native-protocol` (and `:android`, `:apple`, `:winrt`).
- `native/tauri/permissions/autogenerated/` is generator-owned; regenerate,
  do not edit. The Tauri crate has its own consumer README at
  [`native/tauri/README.md`](tauri/README.md).
- Capability truth comes from the instantiated backend at runtime. A platform
  that cannot do something reports `capability.unsupported` with a reason —
  never substitute a plausible answer in native code.
