# Moving from Sized 1.0 to 2.0 The existing flags and table/CSV/NDJSON workflows remain. Update automation to handle incomplete scans: exit 0 means a complete result; exit 1 means a missing root, an incomplete scan or another operation failure. CLI argument errors use Clap's exit 2. An incomplete scan may still produce useful output. Diagnostics go to stderr, and each JSON report includes `complete`. Hard-linked files now contribute allocated blocks once, owned by the first path in deterministic traversal order. Apparent sizes remain per pathname. Totals may be lower than 1.0 for this reason. Ignore rules inherit through directories; `--one-file-system` explicitly skips other mounted filesystems. Allocation is filesystem-reported blocks, not guaranteed recoverable space. ## Rust consumers The CLI package is version 2.0.0. Its scanner is the exact `sized-core` revision recorded in `CORE-SNAPSHOT.json`, also used by SizeQueen. The core snapshot's internal package version remains 0.0.0; the full Git revision and file hashes identify it. It is an included path dependency, so no private forge access or separate core installation is required. Public scanner types and `sized::scan` are re-exported from that dependency. `EntryType` adds `Special` and `Unknown`; update exhaustive matches. `Node` has additional accounting/status fields and internal state; obtain nodes through `scan_tree` instead of struct literals. `Args` adds `one_file_system`, and `run` returns scan completeness as a boolean. `build_tree` remains a compatibility helper, but use `scan_tree` to retain structured errors and diagnostics. Use a fresh `ScanControl` per scan. Cancellation is cooperative between filesystem calls. SizeQueen does not launch the CLI; both use the core in process.