v0.2.0
Timeout/budget stops now return the best compression found so far instead of discarding all work. Cancellation still returns an error. - Add CompressResult<W> wrapper with fully_optimized() flag - lz77_optimal seeds outputstore with greedy result before squeeze loop - Propagate fully_optimized flag through deflate_part → blocksplit_attempt → encoder - finish() returns Result<CompressResult<W>, Error> on all three encoders