pub fn scan(store: &Store, dry_run: bool, untracked: bool) -> Result<ScanReport>Expand description
Walk every content file, read its asset/assets declarations, hash the
present files, and (re)write the manifest. The manifest is a projection: a
path no longer declared by any wrapper drops out. Bytes absent locally but
previously cataloged are preserved (the eviction / disk-relief case) since
they cannot be re-hashed. dry_run computes without writing; untracked
additionally reports non-markdown files under sources/ that no wrapper
declares. Never writes when nothing changed (keeps the Git diff and the
--dry-run-then-scan idempotent).