🧊 Coldkeep v1.10.8 — Filesystem Abstraction Groundwork
Coldkeep v1.10.8 — Filesystem Abstraction Groundwork
Summary
Coldkeep v1.10.8 introduces the filesystem abstraction groundwork needed for future deterministic filesystem fault-injection testing.
This release adds behavior-preserving filesystem seams across restore, container, recovery/quarantine, and GC delete paths while keeping the default runtime behavior OS-backed and unchanged.
v1.10.8 does not add filesystem fault injection. It does not simulate ENOSPC, short writes, fsync failures, rename failures, hooks, retries, or altered error behavior.
What changed
Filesystem abstraction package
Added the new internal package:
internal/fsx
The package provides:
FSFileOSFSDefaultNoopFSNewNoop
OSFS delegates directly to the Go standard library.
NoopFS delegates directly to the wrapped filesystem and exists only as a behavior-preserving wrapper for equivalence testing and future deterministic wrappers.
Restore filesystem seam
Restore paths now use a narrow fsx.FS seam where appropriate.
The default restore filesystem remains:
fsx.Default()
Restore behavior remains preserved, including:
- restored bytes;
- destination safety behavior;
- atomic rename behavior where applicable;
- error propagation;
- default OS-backed semantics.
Container filesystem seam
Container paths now use filesystem seams for container creation/opening, metadata checks, writes, sync-related file behavior, removal, retirement, and quarantine-related container operations.
The default container behavior remains OS-backed.
Preserved behavior includes:
- container bytes;
- container header/format behavior;
- metadata behavior;
- sync behavior;
- remove/retire behavior;
- quarantine DB-state behavior;
- public API compatibility.
Recovery and quarantine filesystem seam
Recovery paths now route stat/read-dir operations through fsx.FS seams while preserving existing wrapper signatures and default OS-backed behavior.
Preserved behavior includes:
- recovery scan behavior;
- missing-container handling;
- corrupt active-tail checks;
- orphan container discovery;
- quarantine classification behavior.
GC delete filesystem seam
GC physical delete paths now use an fsx.FS seam for container file removal.
Preserved behavior includes:
- reachability behavior;
- live/simulated GC behavior;
- deletion ordering;
- missing-file/error propagation behavior.
Equivalence coverage
v1.10.8 adds explicit seam and equivalence coverage for:
- restore;
- container;
- recovery/quarantine;
- GC delete.
The tests confirm that default OS-backed behavior and no-op wrapped behavior remain equivalent across the new seam surfaces.
Validation
Before merge, the release was locally validated with:
go test ./...
go test -race ./...
go vet ./...
Targeted seam/equivalence tests also passed for:
internal/fsx
internal/storage
internal/container
internal/recovery
internal/maintenance
CI is green after Codacy review fixes, and the branch has been merged into main.
Compatibility
No migration is required.
Existing Coldkeep repositories remain compatible.
This release does not change:
- CLI behavior;
- repository layout;
- storage format;
- container format;
- catalog/database behavior;
- CI workflows;
- scripts;
- dependencies.
Non-goals
v1.10.8 intentionally does not include:
- fault injection;
- ENOSPC simulation;
- short-write simulation;
- fsync failure simulation;
- rename failure simulation;
- hook behavior;
- retry behavior;
- path rewriting;
- error normalization;
- engine extraction;
- catalog abstraction.
Those remain future work.
Why this release matters
v1.10.8 prepares Coldkeep for future deterministic filesystem failure testing without weakening the current correctness guarantees.
The important result of this release is not new user-facing behavior. The important result is a safer internal structure: Coldkeep can now introduce future filesystem failure tests through explicit seams instead of scattering direct OS behavior throughout correctness-critical paths.