feat: add multi-item ingest and Reed-Solomon parity

- Multi-item ingest: each item gets its own Unix socket, Rust processes
  them sequentially into a single snapshot with separate chunk lists
- Reed-Solomon parity: rs(20,1) erasure coding for pack file groups,
  enabling single-pack-loss recovery via parity reconstruction
- Repair now attempts parity-based recovery for missing pack files
- 16 integration tests + 12 Rust unit tests all pass
This commit is contained in:
2026-03-21 23:46:29 +00:00
parent a5849791d2
commit ca510f4578
10 changed files with 830 additions and 115 deletions

View File

@@ -134,6 +134,7 @@ export interface IRepairResult {
indexRebuilt: boolean;
indexedChunks: number;
staleLocksRemoved: number;
packsRepaired: number;
errors: string[];
}
@@ -180,6 +181,13 @@ export type TContainerArchiveCommands = {
},
{ snapshot: ISnapshot }
>;
ingestMulti: ICommandDefinition<
{
tags?: Record<string, string>;
items: Array<{ name: string; type: string; socketPath: string }>;
},
{ snapshot: ISnapshot }
>;
restore: ICommandDefinition<
{
snapshotId: string;