Phase 9 R1a: peer RepoEnsure/RepoRelease RPC (0x1e/0x1f)
New per-peer RPCs to shallow-clone a (url, git_ref) under a caller- provided workspace namespace, and to release the checkout. Fleet fan-out via the aggregator ships separately in R1b. - src/cluster/repo_ensure.rs: request/reply types + derive_path (traversal-safe, blake3-hashed url segment), ensure_repo (cache hit → rev-parse HEAD, else remove-and-reclone with 5-min timeout), release_repo (idempotent rm) - src/cluster/rpc.rs: Method::RepoEnsure=0x1e, RepoRelease=0x1f, RpcRouter::with_repo_root builder, two dispatch arms returning NotConfigured when repo_root is unset - src/cluster.rs: pub mod repo_ensure - src/actions.rs: fix pre-existing test-only Config init missing the aggregator field (unblocks lib tests) Tests: 6 unit tests covering path derivation determinism, ref/url independence, traversal safety, and sanitizer edge cases. All pass.
This commit is contained in:
@@ -128,6 +128,7 @@ mod tests {
|
||||
peer: None,
|
||||
cluster: None,
|
||||
api_token: None,
|
||||
aggregator: None,
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user