PhoinixDR

PhoinixDR architecture overview

┌─────────────────────────────────────────────────────────────┐
│                    PhoinixDR Desktop (apps/desktop)          │
│                    Tauri 2 + React/TS                       │
└───────────────────────────┬─────────────────────────────────┘
                            │ in-process service layer (phoinix-session, ADR-0010)
┌───────────────────────────▼─────────────────────────────────┐
│           phoinixd (future out-of-process service)          │
└───────────────────────────┬─────────────────────────────────┘
                            │
┌───────────────────────────▼─────────────────────────────────┐
│                       PhoinixDR Core                          │
│  phoinix-core      identifiers, ranges, checked arithmetic  │
│  phoinix-block     read-only BlockReader, RAW, subranges    │
│  phoinix-device    device enumeration, read-only access     │
│  phoinix-volume    MBR / EBR / GPT, partition views         │
│  phoinix-fs        probes, recovery candidates, providers   │
│  phoinix-fs-ntfs   native NTFS reader + undelete            │
│  phoinix-fs-fat    native FAT12/16/32 reader + undelete     │
│  phoinix-fs-exfat  native exFAT reader + undelete           │
│  phoinix-fs-ext    native ext2/3/4 reader, journal, undelete│
│  phoinix-image     E01/VHD/VHDX/VMDK containers, hashing     │
│  phoinix-health    evidence, scoring, explanations          │
│  phoinix-carve     deep scan: signature carving, assembly   │
│  phoinix-partition-recovery  lost partitions, virtual mount │
│  phoinix-session   service layer: scans, sessions, previews │
│  apps/desktop      Tauri 2 shell + React front-end          │
│  phoinix-recovery  recovery writer, safety, SHA-256         │
└─────────────────────────────────────────────────────────────┘

Crate dependency direction

phoinix-core
   ▲
phoinix-block ◄── phoinix-image ◄── phoinix-device
   ▲
phoinix-volume        phoinix-health
   ▲                       ▲
phoinix-fs ◄───────────────┘
   ▲
phoinix-fs-ntfs / phoinix-fs-fat / phoinix-fs-exfat / phoinix-fs-ext
phoinix-carve (phoinix-fs contracts + phoinix-health only)
phoinix-partition-recovery (block, volume, engines' boot parsers, carve scanner)
phoinix-session (composes engines, carve, partition recovery and recovery; no GUI dependency)
apps/desktop/src-tauri (phoinix-session only; separate Cargo workspace)
   ▲
phoinix-recovery (phoinix-fs contracts, phoinix-image for the report's container facts)
   ▲
phoinix-cli

Generic crates never depend on filesystem-specific crates. phoinix-recovery reads candidate content through the DeletedFileProvider contract in phoinix-fs, so it works with any filesystem engine.

Data flow of the first vertical slice

RAW or physical NTFS source          phoinix-block / phoinix-device
        ↓
identify partition table             phoinix-volume
        ↓
locate NTFS volume                   phoinix-fs probes (NtfsProbe)
        ↓
parse $MFT                           phoinix-fs-ntfs
        ↓
identify deleted FILE records
recover filename and parent
resolve resident / non-resident data
resolve runlist, query $Bitmap
        ↓
build RecoveryEvidence               phoinix-fs-ntfs → phoinix-health
        ↓
calculate RecoveryHealth             phoinix-health
        ↓
recover to destination, SHA-256      phoinix-recovery
deep scan (carving of free space)    phoinix-carve, over AllocationView of the engine

Policies