Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
42 commits
Select commit Hold shift + click to select a range
9c92c1f
Retain durable Git packs and repack serving caches in background
forhappy Oct 1, 2026
dd76191
Bound graph edge statements within larger certificate batches
forhappy Oct 1, 2026
ccfd7c5
Merge pack-storage prerequisite into the current Rust workspace
forhappy Oct 1, 2026
80e5bd3
Add certified packed catalogs and bounded publication dispatch
forhappy Oct 1, 2026
3995698
Use fixed-size chunks for Git index offsets
forhappy Oct 1, 2026
4a40fb9
Partition incoming directory runs under bounded indexed roots
forhappy Oct 1, 2026
0417f60
Add certified bounded ingress catalog compaction
forhappy Oct 1, 2026
cc89e98
Add bounded adjacent-level catalog range compaction
forhappy Oct 1, 2026
9cf90bd
Support verified directory coverage and bounded compaction windows
forhappy Oct 2, 2026
ce363c5
Release workspace pins before reader and disk admission
forhappy Oct 2, 2026
f0c7f83
Select bounded directory jobs with fair geometric pressure policy
forhappy Oct 2, 2026
41df757
Share bounded publication dispatch with catalog maintenance
forhappy Oct 2, 2026
057918b
Separate staged input custody from catalog generation floors
forhappy Oct 2, 2026
10f357f
Own staging renewal, input handoff and exact recovery in the service
forhappy Oct 2, 2026
5a3b300
Admit SQLite construction capacity as verification spools grow
forhappy Oct 2, 2026
20f7130
Grow ancestry scratch and fence incomplete traversal reuse
forhappy Oct 2, 2026
966d710
Share admitted dependency spools across native verification pages
forhappy Oct 2, 2026
bf9e917
Retain native owners until process and descendant drain
forhappy Oct 2, 2026
9942a8f
Admit native work through shared node resource claims
forhappy Oct 2, 2026
b36a3a6
Drain native work before releasing node ownership
forhappy Oct 2, 2026
a34ea8d
Add session-only push outcome completion
forhappy Oct 2, 2026
95ef9ea
feat: capture staged native receive pack inputs
forhappy Oct 2, 2026
b30feb0
feat: checkpoint and adopt retained native input roots
forhappy Oct 2, 2026
c200d63
feat: supervise exact native input checkpoint registration
forhappy Oct 2, 2026
63299e3
feat: authenticate retained native input publication custody
forhappy Oct 2, 2026
f59617d
fix: release completed capture fences across unrelated forks
forhappy Oct 2, 2026
df7d79f
feat: supervise exact bound input checkpoint registration
forhappy Oct 2, 2026
7353e55
feat: supervise exact bound preparation claim and renewal
forhappy Oct 2, 2026
0c38d4a
feat: own and renew bound preparation through staging lifecycle
forhappy Oct 2, 2026
b2a7949
feat: serialize final publication through bound lifecycle
forhappy Oct 2, 2026
6b62045
feat: retain owned authenticated push preflight
forhappy Oct 2, 2026
5e48a3a
feat: checkpoint encoded push requests before native receive
forhappy Oct 2, 2026
1319d0a
Retain scoped native completion roots for takeover recovery
forhappy Oct 2, 2026
487ebd2
Add immutable versioned ref-state trees and authenticated snapshots
forhappy Oct 2, 2026
95650f0
Coalesce immutable ref batches and balance streaming tree tails
forhappy Oct 2, 2026
07be856
Bind ref snapshots to retained catalog generations
forhappy Oct 2, 2026
ecc5c6c
Initialize fresh catalog and ref roots atomically
forhappy Oct 2, 2026
5f98a3a
Merge main into packed catalog publication
forhappy Oct 2, 2026
a286214
Merge pack storage prerequisite from main
forhappy Oct 2, 2026
7ff1fe1
test: establish cold state before ref discovery
forhappy Oct 2, 2026
8bb0ee7
feat: prepare bounded current ref policy guards
forhappy Oct 3, 2026
ad00318
feat: freeze bounded immutable push completion outcomes
forhappy Oct 3, 2026
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
2 changes: 2 additions & 0 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

28 changes: 27 additions & 1 deletion config.example.json
Original file line number Diff line number Diff line change
Expand Up @@ -11,5 +11,31 @@
"listen": "127.0.0.1:8080",
"data_dir": "/var/lib/canopy",
"local_disk_limit_bytes": 10737418240,
"max_active_repositories": 100
"max_active_repositories": 100,
"native_limits": {
"total": {
"processes": 32,
"cpu_units": 48,
"memory_bytes": 17179869184,
"descriptors": 2048
},
"maintenance_reserved": {
"processes": 2,
"cpu_units": 8,
"memory_bytes": 2147483648,
"descriptors": 128
},
"read": {
"processes": 1,
"cpu_units": 1,
"memory_bytes": 268435456,
"descriptors": 32
},
"pack": {
"processes": 1,
"cpu_units": 4,
"memory_bytes": 1073741824,
"descriptors": 64
}
}
}
3 changes: 3 additions & 0 deletions crates/canopy-git-format/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -10,3 +10,6 @@ serde = { version = "1", features = ["derive"] }
sha1 = "0.11"
sha2 = "0.11"
thiserror = "2.0"

[dev-dependencies]
tempfile = "3"
14 changes: 10 additions & 4 deletions crates/canopy-git-format/src/lib.rs
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
//! Git object formats and canonical object identifiers.

pub mod pack_index;

use sha1::{Digest, Sha1};
use sha2::Sha256;
use std::ops::Deref;
Expand Down Expand Up @@ -146,13 +148,17 @@ pub enum ObjectHasher {
}
impl ObjectHasher {
pub fn new(format: ObjectFormat, kind: ObjectKind, size: u64) -> Self {
let mut hash = match format {
ObjectFormat::Sha1 => Self::Sha1(Sha1::new()),
ObjectFormat::Sha256 => Self::Sha256(Sha256::new()),
};
let mut hash = Self::raw(format);
hash.update(format!("{} {size}\0", kind.git_name()).as_bytes());
hash
}
/// Native pack/index checksum, without the canonical object header prefix.
pub fn raw(format: ObjectFormat) -> Self {
match format {
ObjectFormat::Sha1 => Self::Sha1(Sha1::new()),
ObjectFormat::Sha256 => Self::Sha256(Sha256::new()),
}
}
pub fn update(&mut self, bytes: &[u8]) {
match self {
Self::Sha1(hash) => hash.update(bytes),
Expand Down
Loading
Loading