Xamidimura

Xamidimura provides the shared file-revision contract used by Canopus, Hadar, and Rukbat. It reads a stable byte snapshot, records a filesystem signature, and computes a SHA-256 revision for optimistic save-conflict checks.

The gem is named for μ¹ Scorpii: Xamidimura is an IAU-adopted Khoekhoe name derived from xami di mura, “eyes of the beast” (All Skies Encyclopaedia).

snapshot = Xamidimura::SourceRevision.read("notes.md", reject_symlink: true)
snapshot.bytes       # exact bytes read
snapshot.signature   # stable filesystem signature
snapshot.digest      # SHA-256 of those bytes

read retries if the file changes during the read. Use signature for cheap change checks, digest for bytes already in memory, and file_digest to hash a file without loading it all into memory.

Xamidimura requires Ruby 3.2 or newer and has no runtime dependencies.