Local-first, read-only physical inventory and exact file-format evidence for MailVault archives.
فارسی · Download · Getting started · Exact formats · CLI · Security
Final feature pre-release:
0.1.0-alpha.6combines continuous incremental profiling, same-run crash recovery and automatic exact-format identification. Windows builds bundle pinned Siegfried1.11.6and PRONOMv124. MailVault remains read-only and 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
→ full metadata reconciliation from an immutable snapshot
→ cumulative SHA-256 identity and occurrence history
→ selective file-stat verification and retry
→ automatic exact-format identification with PUID evidence
→ durable incremental generations and searchable desktop/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 4 completed the Windows quality gate and exact-format run on all 13,684 real objects. Alpha 6
adds schema migration 0007, continuous generations, update-aware metadata reconciliation, selective
content reuse, same-run recovery and bounded snapshot retention. Publication still requires the Alpha 6
real-runtime acceptance matrix to pass on Windows.
- 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-Alpha6
E:\MailVault-Profiler-Evidence-Alpha6
Full instructions: Windows installation.
Run the complete initial or incremental pipeline:
.\target\release\mailvault-profiler.exe profile `
--archive "E:\MailVault-E" `
--workspace "E:\MailVault-Profiler-Alpha6" `
--siegfried ".\tools\siegfried\windows-x86_64\sf.exe" `
--signature ".\tools\siegfried\windows-x86_64\default.sig" `
--retain-successful-snapshots 2Keep the same workspace current after future MailVault syncs:
.\target\release\mailvault-profiler.exe profile `
--archive "E:\MailVault-E" `
--workspace "E:\MailVault-Profiler-Alpha6" `
--watch `
--poll-seconds 300The standalone formats commands remain diagnostic tools. The normal profile command now runs exact
format identification automatically before the generation can succeed.
Create or reopen the physical inventory first:
.\target\release\mailvault-profiler.exe workspace inspect `
--workspace "E:\MailVault-Profiler-Alpha6" `
--json
.\target\release\mailvault-profiler.exe runs list `
--workspace "E:\MailVault-Profiler-Alpha6" `
--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-Alpha6" `
--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-Alpha6" `
--run "<physical-profile-run-id>" `
--json
.\target\release\mailvault-profiler.exe formats list `
--workspace "E:\MailVault-Profiler-Alpha6" `
--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-alpha6.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 trusted Alpha 4 predecessor passed 36 Rust tests, strict Clippy, TypeScript, Vite, native Tauri and the full private exact-format run. Alpha 6 static package gates validate version alignment, documentation/privacy, JSON/TOML and SQLite schema migration.
Before publishing Alpha 6, run:
.\scripts\quality-alpha6.ps1 -BuildInstallers
.\scripts\validate-alpha6-real.ps1 ...
.\scripts\validate-alpha6-delta.ps1 ...
.\scripts\validate-alpha6-crash.ps1 ...
.\scripts\validate-alpha6-soak.ps1 -Cycles 100 ...
.\scripts\validate-alpha6-rebuild-equivalence.ps1 ...See Alpha 6 validation contract, continuous profiling and real acceptance runbook.
- 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 6 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.



