Files
spacedrive/docs
Jamie Pine 7a3c09235d Give the filesystem a writer into the source store
The store half of P2. A walk becomes rows in the same record table the
adapters write, through its own ingest.

Ledger is the identity procedure the plan wanted as a table: every binding
loaded into two maps at attach, resolution a hash lookup. Path hit with the
same size and mtime writes nothing. Path hit with either changed keeps the
record and drops the content identity, since a hash that names the old bytes
is worse than none. Path miss with an inode hit rebinds only when size or
mtime corroborates, because inode numbers get reused and a wrong rebind moves
someone's assertions onto an unrelated file, while a missed one costs a
re-tag.

apply_files writes the batch, its removals and its watermark in one
transaction, so a kill partway through leaves neither a partial batch nor a
watermark claiming work that did not land.

Both writers share INSERT_RECORD, now conflicting on the uuid rather than on
(type, external_id): the walker resolves identity before writing, and a moved
file is one row updated instead of a delete and an insert that would strand
its assertions. UNIQUE (type, external_id) still stands, so two records
claiming one path fails loudly.

The filesystem is a declared data type, one model in Rust, so facet_file, the
_schema row and the migration diff all come from the machinery the adapters
use. FILE_SCHEMA goes: it was the same table declared twice. No index on
facet_file.inode, against the design doc, because the only reader is one
sequential scan at attach.
2026-08-25 01:00:08 -07:00
..
2025-11-14 21:40:49 -08:00
2025-11-14 21:31:21 -08:00
2025-11-14 21:31:21 -08:00
2025-11-14 21:31:21 -08:00
2025-11-14 21:31:21 -08:00
2025-11-14 21:40:49 -08:00

Spacedrive Documentation

This repository contains the Mintlify-powered documentation for Spacedrive.

Structure

  • docs/ - Symlink to main spacedrive repo documentation
  • mint.json - Mintlify configuration