feat: activate/deactivate/list/sync/pull commands + peer sync queue

- activate <org/repo>: wire hot tier, write .cargo/config.toml, register
- deactivate <org/repo>: auto-sync to peer, evict hot tier, unregister
- list: show all warm repos with activation status and last-active time
- sync <org/repo>: git push origin then SSH peer to pull
- pull <org/repo>: git pull from origin, stamp last_sync in manifest
- SyncQueue: file-based retry queue (/var/lib/claw-store/sync-queue.toml)
- daemon: drains sync queue on every 5-min poll tick
- config: [peer] host/user for cross-node notification
- manifest: Project.name is now org/repo, adds last_sync field
- hot tier paths are org/repo-namespaced to avoid collisions

Co-Authored-By: Claude Sonnet 4.6 <[email protected]>
This commit is contained in:
Omar Sobh
2026-06-16 11:45:04 +00:00
co-authored by Claude Sonnet 4.6
parent 3fb108edfc
commit a9c12173fe
6 changed files with 423 additions and 65 deletions
+7
View File
@@ -45,6 +45,12 @@ pub struct ReplicationConfig {
pub nightly_at: Option<String>,
}
#[derive(Debug, Clone, Deserialize, Serialize)]
pub struct PeerConfig {
pub host: String,
pub user: String,
}
#[derive(Debug, Clone, Deserialize, Serialize)]
pub struct Config {
pub node: NodeConfig,
@@ -52,6 +58,7 @@ pub struct Config {
pub warm: WarmConfig,
pub cold: Option<ColdConfig>,
pub replication: Option<ReplicationConfig>,
pub peer: Option<PeerConfig>,
}
impl Config {