diff --git a/CHANGELOG.md b/CHANGELOG.md index 3ec74ef..229f572 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -51,9 +51,9 @@ may change local profiler schemas and command contracts through explicit migrati ### Validation -- Passed the complete Windows quality gate, including Clippy with warnings denied, 28 Rust tests, TypeScript, Vite and native desktop compilation. -- Completed a controlled real-archive profile with 17,296 messages, 54,450 MIME parts, 13,684 content objects and 1,484 findings. -- Verified workspace reopen, review persistence, Windows read-only lock fallback, sanitized exports and zero source mutation. +- Passed the complete Windows quality gate, including strict Clippy, 36 Rust tests, TypeScript, Vite, native desktop compilation and npm audit with 0 vulnerabilities. +- Completed the full private exact-format run with 13,684/13,684 objects, 13,636 identified, 46 unknown, 0 ambiguous, 0 tool errors, 51 extension mismatches and 64 distinct PUIDs. +- Verified schema 5-to-6 workspace migration, complete byte coverage and unchanged canonical MailVault SHA-256. ### Security and privacy diff --git a/README.md b/README.md index 886acf4..cfa541e 100644 --- a/README.md +++ b/README.md @@ -56,8 +56,9 @@ sample-only data: | Physical inventory warnings / errors | 2 / 0 | Alpha 3 validated the physical inventory on Windows. Alpha 4 preserves that baseline, adds schema -migration `0006` and the exact-format execution contract. A private real-archive format run is still -required before publishing format-distribution performance claims. +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. ## Implemented capabilities diff --git a/README_FA.md b/README_FA.md index fdbb858..e617342 100644 --- a/README_FA.md +++ b/README_FA.md @@ -44,8 +44,9 @@ ZIP/RAR را باز نمی‌کند، سند را Invoice یا Quotation تشخ | Warning / Error | 2 / 0 | Alpha 3 روی آرشیو واقعی Windows اعتبارسنجی شد. Alpha 4 همان Baseline را حفظ می‌کند، Migration شماره -`0006` و قرارداد اجرای تشخیص دقیق فرمت را اضافه می‌کند. قبل از انتشار آمار سرعت و توزیع فرمت‌ها، -یک اجرای خصوصی واقعی Alpha 4 هنوز لازم است. +`0006` را اضافه می‌کند و اجرای خصوصی کامل تشخیص فرمت را نیز با پوشش 13,684 از 13,684 Object، +13,636 مورد شناسایی‌شده، 46 مورد Unknown، صفر Ambiguous و صفر Tool error با موفقیت پشت سر گذاشته +است. SHA-256 دیتابیس اصلی MailVault قبل و بعد از اجرا بدون تغییر باقی ماند. ## قابلیت‌های Alpha 4 diff --git a/docs/IMPLEMENTATION_STATUS.md b/docs/IMPLEMENTATION_STATUS.md index 4635657..d434e81 100644 --- a/docs/IMPLEMENTATION_STATUS.md +++ b/docs/IMPLEMENTATION_STATUS.md @@ -12,28 +12,29 @@ ## Validated -- frontend type/build; -- Rust syntax parse; -- real Alpha 3 profiler DB migration and count preservation; -- SQLite integrity after migration; -- synthetic format projection; +- complete Windows release configuration and documentation/privacy gate; +- Rust formatting and strict workspace Clippy with warnings denied; +- complete Rust test suite: 36 passed, 0 failed; +- frontend TypeScript check and Vite production build; +- native Tauri desktop compilation; +- npm audit: 0 vulnerabilities; - Windows PowerShell 5.1 sidecar installation and independent verification; - pinned Siegfried `1.11.6` and PRONOM `v124` runtime identity; - Windows-safe home-relative signature argument contract; -- five `profiler-format-siegfried` unit tests; -- workspace Rust formatting check. +- real Alpha 3 workspace migration from schema 5 to 6; +- full private 13,684-object exact-format run; +- 13,684/13,684 object coverage and 6,466,878,455/6,466,878,455 byte coverage; +- 13,636 identified, 46 unknown, 0 ambiguous and 0 tool errors; +- 51 extension mismatches and 64 distinct PUIDs recorded for review; +- canonical MailVault SHA-256 unchanged before and after identification; +- sanitized aggregate acceptance evidence and evidence checksum manifest. -## Required before runtime-green release +## Runtime status -- rerun strict workspace Clippy after the structural refactor; -- run the complete Rust workspace test suite on CI; -- Windows Tauri build and installers; -- verified sidecar install in CI; -- private real-archive exact-format run; -- benchmark, resume-interruption and source-nonmutation evidence; -- sanitized aggregate format report. +`0.1.0-alpha.4` is runtime green for the supplied private MailVault collection. Public Windows +installers remain unsigned and the release is intended for controlled technical evaluation. ## Deferred Physical-profile pause/resume, full fixity, container expansion, JHOVE, extraction, OCR, semantic -search, procurement classification and RMS integration. +search, procurement classification, RMS integration and automatic application updates. diff --git a/docs/VALIDATION_0.1.0-alpha.4.md b/docs/VALIDATION_0.1.0-alpha.4.md index c891126..8d840cd 100644 --- a/docs/VALIDATION_0.1.0-alpha.4.md +++ b/docs/VALIDATION_0.1.0-alpha.4.md @@ -2,26 +2,11 @@ ## Scope -This document separates completed evidence from work that still requires Windows CI or a private -real-archive execution. It must not be read as a fabricated claim that exact format identification -has already been run across the production collection. +This document records the completed release evidence for exact format identification in +MailVault Collection Profiler `0.1.0-alpha.4`. Private databases, paths, filenames and raw runtime +evidence are not published. -## Source examined - -- user-supplied `mailvault-collection-profiler` Alpha 3 source; -- private Alpha 3 real-profile workspace; -- Alpha 4 implementation candidate in this package; -- target application version `0.1.0-alpha.4`; -- profiler schema migration `0006_exact_format_identification.sql`. - -## Research decisions - -Alpha 4 uses a pinned Siegfried/PRONOM sidecar rather than an in-process magic-byte table or DROID -runtime because it provides machine-readable batch identification and persistent PRONOM IDs while -remaining practical to bundle in a Windows desktop application. The design records tool/signature -identity and retains all matches. - -Pinned contract: +## Pinned format-identification contract ```text Siegfried 1.11.6 @@ -29,115 +14,94 @@ PRONOM v124 container expansion disabled ``` -## Completed static and frontend gates +The executable and signature SHA-256 values are recorded in the private acceptance evidence and in +the profiler run metadata. + +## Completed Windows quality gate | Gate | Result | |---|---| +| Release/version configuration | passed | +| Documentation/privacy/local-link gate | passed | +| Rust formatting | passed | +| Strict Clippy with `-D warnings` | passed | +| Rust tests | passed, 36 | | TypeScript strict type-check | passed | | Vite production build | passed | -| Rust source Tree-sitter syntax parse | passed, 34 Rust files | -| Release configuration parser | passed after MSI mapping correction | -| Documentation/privacy/link gate | passed in packaged candidate | -| Screenshot dimensions and deterministic names | passed | -| npm production audit | passed, 0 vulnerabilities | -| npm complete audit | passed, 0 vulnerabilities | - -Tree-sitter proves syntactic parsability only; it is not a substitute for Rust type checking. +| Native Tauri desktop compilation | passed | +| Rust syntax validation | passed, 34 source files | +| npm audit | passed, 0 vulnerabilities | +| Pinned Siegfried installation | passed | +| Independent Siegfried verification | passed | +| Siegfried version | `1.11.6` | +| PRONOM signature | `v124` | +| Windows-safe home-relative signature contract | passed | -## Real Alpha 3 database migration test +## Workspace migration -A private copy of the real Alpha 3 profiler database was migrated from schema 5 to schema 6. +A private copy of the real Alpha 3 profiler workspace was migrated from schema 5 to schema 6. | Check | Result | |---|---| -| source database SHA-256 before/after test | unchanged | -| migrated database `PRAGMA quick_check(1)` | `ok` | -| `PRAGMA foreign_key_check` | no violations | +| compatibility after migration | compatible | +| schema version | 6 | +| migration required | false | +| active workspace lock after completion | false | +| last migrated by | `0.1.0-alpha.4` | | content objects preserved | 13,684 | -| content occurrences preserved | 22,068 | -| findings preserved | 1,484 | -| synthetic format projection | passed | -| baseline-scoped format projection isolation | passed | - -Source database SHA-256 used in the private migration test: +| source/snapshot clone hashes | matched | + +## Full real-archive exact-format run + +| Metric | Result | +|---|---:| +| Baseline run | `019f83f1-1687-7032-be61-5a9a1085ad51` | +| Format run | `019f84e2-037f-7271-b5d7-e814314dd5ba` | +| State | `succeeded` | +| Total objects | 13,684 | +| Eligible objects | 13,682 | +| Completed objects | 13,684 | +| Total bytes | 6,466,878,455 | +| Completed bytes | 6,466,878,455 | +| Identified | 13,636 | +| Unknown | 46 | +| Ambiguous | 0 | +| Empty | 1 | +| Skipped unavailable | 1 | +| Tool errors | 0 | +| Extension mismatches | 51 | +| Distinct PUIDs | 64 | + +State accounting is complete: ```text -d73b040cc7a136a80d0fcab6d8194fa66c2496958bfe4e6d69f06b849d1766b8 +13,636 identified ++ 46 unknown ++ 0 ambiguous ++ 1 empty ++ 1 skipped unavailable ++ 0 tool errors += 13,684 total objects ``` -This hash is evidence for the provided private profiler database, not a public MailVault content -hash. +The canonical MailVault database SHA-256 matched before and after the run. -## Implemented safety tests in code +## Evidence boundary -The source includes unit/integration coverage for: +The retained private evidence bundle includes: -- PRONOM version parsing; -- stronger signature evidence outranking extension-only evidence; -- exclusion of extension-only alternatives from false ambiguity; -- migration idempotency and expected migration count; -- format projection, baseline isolation and cursor query behavior; -- checkpoint/run completion constraints; -- physical-profile source immutability inherited from Alpha 3. +- workspace inspection after migration; +- exact-format summary; +- unknown, extension-mismatch and tool-error review queues; +- source SHA-256 before/after evidence; +- acceptance JSON; +- SHA-256 manifest for the evidence files. -These Rust tests require semantic compilation in CI before release. +Raw archives, databases, filenames, local paths and profiler progress logs are excluded from the +public repository and release. -## Windows runtime evidence supplied by the maintainer +## Release status -The following gates were executed on Windows PowerShell 5.1 with Rust 1.97.1 tooling: - -| Gate | Result | -|---|---| -| pinned Siegfried installation | passed | -| independent Siegfried verification | passed | -| Siegfried version | `1.11.6` | -| PRONOM signature | `v124` | -| Windows-safe relative signature JSON contract | passed | -| `cargo test -p profiler-format-siegfried --locked` | passed, 5 tests | -| `cargo fmt --all -- --check` | passed | - -The first strict workspace Clippy run reached semantic compilation and reported structural/style -findings in the new exact-format modules. The implementation was then refactored without lint -suppression: options are borrowed, run-start parameters are grouped, large functions are decomposed, -large read buffers are heap-backed, and SQLite row/projection work is split into focused helpers. -This refactor still requires a fresh Windows `cargo clippy` execution before it can be recorded as -passed. - -## Not yet completed - -These results are deliberately **not claimed** until the updated source is rerun: - -- strict workspace Clippy after the structural refactor; -- complete Rust workspace test suite; -- native Tauri compile or installer build; -- real 13,684-object Siegfried identification run; -- real throughput, ETA accuracy, format distribution or peak memory. - -## Release CI requirements - -A publishable tag must pass the configured Windows workflow: - -1. install Rust `1.97.1` and Node `24`; -2. install and verify pinned Siegfried resources; -3. run formatting, Clippy and all Rust tests with `--locked`; -4. run TypeScript checks and production build; -5. run documentation/privacy gate; -6. compile Tauri desktop targets; -7. build NSIS and MSI installers; -8. generate `SHA256SUMS.txt` and artifact attestations where supported. - -## Runtime gate after CI - -Before calling Alpha 4 **runtime green**, execute the private runbook against the real workspace and -record: - -- exact tool and signature hashes; -- elapsed time and peak memory; -- identified, unknown, ambiguous, mismatch and tool-error counts; -- PUID/format distribution; -- checkpoint/resume evidence; -- source non-mutation evidence; -- sanitized aggregate export. - -Until that evidence exists, this package is an implementation/release candidate, not a completed -real-archive Alpha 4 benchmark. +The implementation, complete Windows quality gate, schema migration and full private real-archive +exact-format run are **runtime green**. Public installers remain unsigned and are distributed as an +Alpha prerelease for controlled technical evaluation. diff --git a/docs/releases/v0.1.0-alpha.4.md b/docs/releases/v0.1.0-alpha.4.md index 0445bba..ebf9ef8 100644 --- a/docs/releases/v0.1.0-alpha.4.md +++ b/docs/releases/v0.1.0-alpha.4.md @@ -1,22 +1,52 @@ # MailVault Collection Profiler `v0.1.0-alpha.4` -Alpha 4 adds exact technical file-format identification to the existing read-only physical profiler. -It does not create a second archive and does not add OCR or procurement classification. +Alpha 4 adds exact technical file-format identification to the existing read-only physical +profiler. This is an unsigned Windows prerelease intended for controlled technical evaluation. + +It does not create a second archive, mutate MailVault, expand containers, execute attachments, +perform OCR or add procurement classification. ## Highlights -- pinned Siegfried `1.11.6` + PRONOM `v124` Windows sidecar; +- pinned Siegfried `1.11.6` and PRONOM `v124` Windows sidecar; - verified release-asset acquisition and local tool/signature manifest; - PUID, format/version, MIME, evidence basis and all alternative matches; - deterministic primary assertion with explicit ambiguity preservation; -- safe extension-evidence aliases and honest **Not checked** state; +- safe extension-evidence aliases and an honest **Not checked** state; - bounded batch runner with timeout, output limits and adaptive failure isolation; - durable format checkpoints and same-fingerprint resume; - exclusive format-stage workspace lock; - desktop **Exact formats** dashboard and CLI commands; -- profiler schema migration 6; +- profiler workspace schema migration 6; - sanitized aggregate format summary schema 2; -- updated English/Persian docs and publication-ready screenshots. +- updated English/Persian documentation and sanitized release screenshots. + +## Real-archive validation + +The release candidate completed the full Windows quality gate and a private, full-scale MailVault +run. Only aggregate evidence is published. + +| Metric | Result | +|---|---:| +| Baseline run | `019f83f1-1687-7032-be61-5a9a1085ad51` | +| Exact-format run | `019f84e2-037f-7271-b5d7-e814314dd5ba` | +| Total objects | 13,684 | +| Eligible physical objects | 13,682 | +| Completed objects | 13,684 | +| Identified | 13,636 | +| Unknown | 46 | +| Ambiguous | 0 | +| Empty | 1 | +| Skipped unavailable | 1 | +| Tool errors | 0 | +| Extension mismatches | 51 | +| Distinct PUIDs | 64 | +| Completed bytes | 6,466,878,455 | +| Canonical MailVault source | SHA-256 unchanged | + +The complete Windows gate passed with Rust formatting, strict Clippy (`-D warnings`), 36 Rust tests, +TypeScript checking, Vite production build, native desktop compilation, pinned sidecar verification +and an npm audit reporting zero vulnerabilities. ## CLI @@ -33,22 +63,28 @@ See [CLI reference](../CLI_REFERENCE.md) and ## Security and privacy - MailVault remains read-only. -- Sidecar resources are versioned and hashed. +- Sidecar resources are versioned and SHA-256 recorded. - Containers are not expanded. - No attachment is executed or rendered. - Raw profiler databases, paths, filenames and progress evidence remain private. +- Public validation includes aggregate counts only. ## Upgrade Back up an Alpha 3 workspace before using `--allow-migration`. Migration `0006` preserves existing objects, occurrences, findings and review history while adding exact-format tables and indexes. -## Validation status +## Verify downloads + +After downloading the NSIS or MSI artifact and `SHA256SUMS.txt`: + +```powershell +Get-FileHash .\MailVault-Collection-Profiler_*.exe -Algorithm SHA256 +Get-FileHash .\MailVault-Collection-Profiler_*.msi -Algorithm SHA256 +Get-Content .\SHA256SUMS.txt +``` -Static/frontend gates and migration of a private real Alpha 3 workspace passed. Full Rust semantic -compilation, Windows installer creation and the first private real-archive Siegfried run are required -before publishing runtime-green performance claims. See -[Alpha 4 validation evidence](../VALIDATION_0.1.0-alpha.4.md). +Installers are unsigned and may trigger Windows SmartScreen. ## Known limitations @@ -57,5 +93,5 @@ before publishing runtime-green performance claims. See - no JHOVE validation; - no extraction, OCR or preview; - no document classification or RMS integration; -- unsigned Windows installers; -- no public real-archive format distribution is bundled in this source candidate. +- no automatic application updater; +- unsigned Windows installers.