Local-first, read-only physical inventory and exact file-format evidence for MailVault archives.
فارسی · Download · Getting started · Exact formats · CLI · Security
Development pre-release:
0.1.0-alpha.4adds exact format identification as a versioned, resumable profiler stage. Windows release builds bundle a pinned Siegfried1.11.6sidecar and PRONOMv124signature database. The source archive remains read-only. Installers are unsigned.
MailVault preserves canonical email evidence. Collection Profiler creates a rebuildable technical index over that evidence:
MailVault archive (read-only)
→ consistent SQLite snapshot
→ physical content inventory
→ exact SHA-256 identity and occurrence history
→ bounded file-stat verification
→ exact format identification with PUID evidence
→ searchable desktop and CLI views
The profiler does not download mail, mutate MailVault, execute attachments, perform OCR, expand archives, classify procurement documents or write to RMS.
The architecture and performance envelope are based on the supplied production collection, not sample-only data:
| Metric | Recorded |
|---|---|
| Archive scale | approximately 20–30 GB |
| Messages | 17,296 |
| MIME parts | 54,450 |
| Content objects | 13,684 |
| Content occurrences | 22,068 |
| Message relationships | 12,115 |
| Unique blob bytes | 6,467,253,277 |
| Physical inventory findings | 1,484 |
| Physical inventory warnings / errors | 2 / 0 |
Alpha 3 validated the physical inventory on Windows. Alpha 4 preserves that baseline, adds schema
migration 0006, and completed a private full-scale exact-format run: 13,684/13,684 objects,
13,636 identified, 46 unknown, 0 ambiguous and 0 tool errors. The canonical MailVault database
SHA-256 remained unchanged.
- MailVault schema-v3 capability preflight and writer-lock checks.
- Read-only SQLite Online Backup snapshot with source-change detection.
- Streaming inventory of messages, participants, MIME parts, relationships and blobs.
- Exact SHA-256 content identity separated from every message/filename occurrence.
- Missing, unreadable, invalid-locator, non-regular, zero-byte and size-mismatch findings.
- Same-hash/different-name and same-name/different-hash evidence.
- Cursor-paginated inventory, content-object detail and append-only finding review.
- Sanitized summary and finding export without local paths, filenames, addresses or review notes.
- One identification job per unique content object, never per duplicate occurrence.
- Pinned Siegfried
1.11.6executable and PRONOMv124signature database. - Tool and signature SHA-256, version, creation metadata and identifier details recorded per run.
- All matches retained; one deterministic primary assertion selected without hiding ambiguity.
- PUID, format name, format version, MIME, class, evidence basis and warnings persisted.
- Explicit states: identified, unknown, ambiguous, empty, unavailable and tool error.
- Extension evidence recorded only when a safe filename alias was actually evaluated.
- Bounded batch execution, process timeout, output-size limits and adaptive batch isolation.
- Durable checkpoint/resume keyed by configuration fingerprint.
- Exclusive format-stage workspace lock to prevent concurrent writers.
- No archive/container expansion and no attachment rendering.
Format assertions are evidence. A result is meaningful only when the executable and signature registry are identifiable and reproducible. The Windows build therefore obtains a specific upstream release, verifies the GitHub release-asset SHA-256 digest, records the executable/signature hashes, probes the observed versions and then bundles them as Tauri resources. Runtime identification fails closed when the required tool or signature version differs.
See Exact format identification, format runbook and third-party notices.
- Open GitHub Releases.
- Download the Windows x64 NSIS installer or MSI.
- Verify the artifact using
SHA256SUMS.txt. - Keep the MailVault archive, profiler workspace and runtime evidence in separate directories.
- Stop MailVault write activity before creating a new source snapshot.
E:\MailVault-E
E:\MailVault-Profiler-Alpha4
E:\MailVault-Profiler-Evidence-Alpha4
Full instructions: Windows installation.
Create or reopen the physical inventory first:
.\target\release\mailvault-profiler.exe workspace inspect `
--workspace "E:\MailVault-Profiler-Alpha4" `
--json
.\target\release\mailvault-profiler.exe runs list `
--workspace "E:\MailVault-Profiler-Alpha4" `
--jsonProbe the exact-format toolchain:
.\target\release\mailvault-profiler.exe formats probe `
--siegfried ".\tools\siegfried\windows-x86_64\sf.exe" `
--signature ".\tools\siegfried\windows-x86_64\default.sig" `
--jsonRun exact identification against a completed physical baseline:
.\target\release\mailvault-profiler.exe formats identify `
--workspace "E:\MailVault-Profiler-Alpha4" `
--run "<physical-profile-run-id>" `
--siegfried ".\tools\siegfried\windows-x86_64\sf.exe" `
--signature ".\tools\siegfried\windows-x86_64\default.sig" `
--batch-size 2048 `
--workers 0 `
--timeout-seconds 900 `
--resume true `
--allow-migration `
1> format-result.json `
2> format-progress.jsonlInspect aggregate and object-level results:
.\target\release\mailvault-profiler.exe formats summary `
--workspace "E:\MailVault-Profiler-Alpha4" `
--run "<physical-profile-run-id>" `
--json
.\target\release\mailvault-profiler.exe formats list `
--workspace "E:\MailVault-Profiler-Alpha4" `
--run "<physical-profile-run-id>" `
--state ambiguous `
--jsonThe CLI writes progress JSONL to stderr and the final result to stdout.
Requirements:
- Rust
1.97.1fromrust-toolchain.toml; - Node.js
24.xand npm11+; - Visual Studio/Build Tools with Desktop development with C++;
- Windows SDK and WebView2 Runtime.
npm ci
.\scripts\install-siegfried.ps1
.\scripts\quality.ps1
npm run tauri:desktop:bundleThe installer build embeds the verified sidecar resources. Generated sf.exe, default.sig and
tool-manifest.json are intentionally not committed to source control.
The following checks were completed in the supplied build environment:
- TypeScript type-check and Vite production build: passed.
- Tree-sitter parse of all Rust source files: passed.
- Alpha 3 real profiler database migration from schema 5 to 6: passed.
- SQLite
quick_checkandforeign_key_checkafter migration: passed. - Real baseline counts preserved: 13,684 objects, 22,068 occurrences, 1,484 findings.
- Source Alpha 3 profiler database SHA-256 unchanged after migration test.
- Synthetic exact-format projection against the migrated schema: passed.
A Rust toolchain was not available in the current isolated build environment, so local semantic
cargo check, Clippy, unit tests, Tauri compilation and a real Siegfried run were not claimed.
GitHub Windows CI and the release workflow are configured to install the pinned sidecar and run the
full Rust/desktop gates before producing installers.
See Alpha 4 validation evidence.
- Documentation index
- Getting started
- Windows installation
- GUI guide
- CLI reference
- Exact format identification
- Exact format runbook
- Architecture
- Workspace format
- Security model
- Privacy
- Real archive baseline
- Release process
- Alpha 4 release notes
- interrupted physical-profile resume and pause/cancel controls;
- full payload fixity re-hash;
- archive/container expansion;
- JHOVE structural validation;
- text extraction and selective OCR;
- semantic search, embeddings and LLM processing;
- procurement classification and RMS writes;
- public code-signing and automatic updates.
Apache License 2.0. See LICENSE, NOTICE and THIRD_PARTY_NOTICES.md.



