What's Changed
Changed
- SFTP
write()/write_atomic()cut per-operation metadata round-trips (BK-313): the SFTP write path drops the redundantstatround-trips raw paramiko skips, and no longer returns alast_modifiedonWriteResult(WriteResult.sizeis unaffected). See the migration guide.
Fixed
- SFTP failure paths on non-OpenSSH servers map to precise error types (BK-316):
PermissionDenied/NotFound/InvalidPathinstead of a genericRemoteStoreError, and interrupted atomic writes no longer leave temp-file litter.except RemoteStoreErrorstill catches them; see the migration guide. GraphBackend.check_health()probes the drive (BUG-231):ping()can now fail when the Graph drive is unreachable.pyarrow<25cap lifted from thearrowandsql-queryextras (BUG-232): every pyarrow extra now aligns on an unboundedpyarrow>=12.0.0, closing a standalone-extra version split.
Documentation
- Benchmark overhead presented as measured values, not a verdict (ID-230), and shown in absolute milliseconds with a raw+overhead decomposition chart (BK-314), correcting the "overhead shrinks as a share" narrative to the round-trip-count mechanism.
- Backend-enumeration order pinned in the add-a-backend checklist (BK-310), and tagline / backend-membership mirrors synced (BK-311).
Links: