Behaviour-preserving refactor (tracker issue #5, no spec): move the inline
pack logic from main into packed::pack_from_store, returning a
PackOutcome {Packed(PackedHeader), Incomplete{cached,total}} so the header
construction is unit-testable without spawning the binary. main's pack branch
shrinks to load-entries + call + match (same stderr messages + exit 2). The
four existing pack CLI tests are the behaviour-parity guard; two new unit tests
cover the complete/incomplete outcomes directly.
refs #5
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>