Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,10 @@

## Unreleased

### Added

- A fallible complete-object CAS port stages and verifies exact bytes before atomic destination promotion. Memory and disk adapters share conformance checks; existing APIs remain compatible and no durability or authenticated absence is claimed.

### Fixed

- The generic operation runner names typed obstruction kinds, footprint conflicts, and missing outcomes in bounded summaries. It omits raw outcome records and invocation data on both Action error paths.
Expand Down
6 changes: 6 additions & 0 deletions crates/echo-cas/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,3 +10,9 @@ Content-addressed blob store for Echo.
that must survive process reconstruction while preserving content-only BLAKE3
hash semantics. Because filesystem writes can fail, `DiskTier` exposes fallible
methods directly instead of hiding I/O behind the infallible `BlobStore` trait.

## Complete-object physical-content port

`physical_content` adds fallible expected staging, explicit backend publication, borrowed read views, and atomic destination promotion. Both MemoryTier and DiskTier pass one shared suite. Staging requires explicit per-object byte bounds; it does not enforce aggregate MemoryTier capacity. Missing content and unsupported output capabilities return operational errors rather than authenticated absence. Receipts establish no synchronization or crash durability. Existing consumers keep their current APIs.

[The physical-content boundary](../../docs/architecture/echo-keep-physical-content-boundary.md) owns the evidence and visibility contract.
2 changes: 1 addition & 1 deletion crates/echo-cas/src/disk.rs
Original file line number Diff line number Diff line change
Expand Up @@ -198,7 +198,7 @@ impl DiskTier {
self.pins.len()
}

fn blob_path(&self, hash: &BlobHash) -> PathBuf {
pub(crate) fn blob_path(&self, hash: &BlobHash) -> PathBuf {
let hex = blob_hash_hex(hash);
self.blobs_dir.join(&hex[..2]).join(hex)
}
Expand Down
1 change: 1 addition & 0 deletions crates/echo-cas/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@

mod disk;
mod memory;
pub mod physical_content;
mod retention;
pub use disk::{DiskTier, DiskTierError};
pub use memory::MemoryTier;
Expand Down
Loading
Loading