diff --git a/README.md b/README.md
index 5432a30..e6ff8c7 100644
--- a/README.md
+++ b/README.md
@@ -144,3 +144,12 @@ Dual licensed. It's free under [AGPL-3.0](LICENSE) for research, education, and

Built by CompleteTech LLC · Innovation at Every Integration
+
+
+### Standalone report provenance
+
+New runs include a `provenance` object in JSON and durable checkpoints with `tool`, `tool_version`, `executable_sha256`, `rules_sha256`, `rules_as_of`, and UTC `generated_at`. CSV appends the same fields to every result or empty summary, after existing completeness columns; HTML displays them separately from per-result observation time. The executable digest identifies the exact standalone file bytes (including when launched through a symlink); the rules digest identifies the embedded fix table, CVEs, date and sources, without claiming deployment attestation.
+
+Recovery preserves the original acquisition identity and generation time, even using a changed checker. Older checkpoints remain readable but JSON has `provenance: null` and CSV/HTML label unavailable identity as `unknown`; recovery never attributes old evidence to its current executable. Per-row `checked_at`, rules verification date and run generation time retain distinct meanings. Existing complete/incomplete counts and `exploitability=not_tested` semantics remain unchanged.
+
+When rendering an older checkpoint, HTML explicitly labels the rendering checker's fix table and source links as **current reference guidance** with their own rule date. They do not reclassify the preserved results or replace the acquisition rule date/digest.
diff --git a/docs/REFERENCE.md b/docs/REFERENCE.md
index 62aba4a..bc7349e 100644
--- a/docs/REFERENCE.md
+++ b/docs/REFERENCE.md
@@ -353,3 +353,12 @@ The WordPress REST marker follows WordPress's documented
## License
Dual licensed under [AGPL-3.0](../LICENSE) or a commercial license; see [LICENSING.md](../LICENSING.md).
+
+
+### Standalone report provenance
+
+New runs include a `provenance` object in JSON and durable checkpoints with `tool`, `tool_version`, `executable_sha256`, `rules_sha256`, `rules_as_of`, and UTC `generated_at`. CSV appends the same fields to every result or empty summary, after existing completeness columns; HTML displays them separately from per-result observation time. The executable digest identifies the exact standalone file bytes (including when launched through a symlink); the rules digest identifies the embedded fix table, CVEs, date and sources, without claiming deployment attestation.
+
+Recovery preserves the original acquisition identity and generation time, even using a changed checker. Older checkpoints remain readable but JSON has `provenance: null` and CSV/HTML label unavailable identity as `unknown`; recovery never attributes old evidence to its current executable. Per-row `checked_at`, rules verification date and run generation time retain distinct meanings. Existing complete/incomplete counts and `exploitability=not_tested` semantics remain unchanged.
+
+When rendering an older checkpoint, HTML explicitly labels the rendering checker's fix table and source links as **current reference guidance** with their own rule date. They do not reclassify the preserved results or replace the acquisition rule date/digest.
diff --git a/docs/example-report.html b/docs/example-report.html
index 0ee999e..db0e8d1 100644
--- a/docs/example-report.html
+++ b/docs/example-report.html
@@ -32,16 +32,17 @@
+CVE-2026-109618 & CVE-2026-109619 · acquisition generated 2026-10-21 14:00 UTC · acquisition rules as of 2026-10-21
6Websites checked
2Potentially affected
2Fixed version reported
2Unknown / not disclosed
3WordPress detected
-Run complete: 6 completed; 0 pending; 6 total targets.
Results
+Run complete: 6 completed; 0 pending; 6 total targets.
Acquisition provenance: tool=php2shell-check; tool_version=1.0.0; executable_sha256=994d58784788a6c93786b0e391a02aa97e5b50f4e8724aa18916cbe3538527ef; rules_sha256=ce910c950455a08ea4ae845af4c6453a14f5e8d28aec47c229b8d815131ff655; rules_as_of=2026-10-21; generated_at=2026-10-21T14:00:00+00:00
Results
| Website | PHP2Shell | PHP reported | Upstream fix | Detection | HTTP | Notes |
| https://example.com/ | Potentially affected | 8.3.35 | 8.3.36 | wordpress | 200 | Advertised PHP 8.3.35 is older than the 8.3.36 upstream fix for both listed CVEs. |
| https://shop.example.org/ | Potentially affected | 8.2.34 | 8.2.35 | no_evidence | 200 | Advertised PHP 8.2.34 is older than the 8.2.35 upstream fix for both listed CVEs. |
| https://blog.example.com/ | Unknown | 8.3.6-1ubuntu0.24.04.13 | 8.3.36 | wordpress | 200 | PHP 8.3.6-1ubuntu0.24.04.13 contains a build qualifier. Confirm the exact vendor package; its upstream base alone cannot establish patch status. |
| https://www.example.edu/ | Unknown | — | — | no_evidence | 200 | No public PHP version was disclosed; lack of a header does not establish that PHP is absent. |
| https://example.net/ | Fixed version reported | 8.4.27 | 8.4.27 | wordpress | 200 | Advertised PHP 8.4.27 is at or above the 8.4.27 upstream fix. This is not a verified clean bill of health. |
| https://portal.example.org/ | Fixed version reported | 8.5.12 | 8.5.12 | no_evidence | 200 | Advertised PHP 8.5.12 is at or above the 8.5.12 upstream fix. This is not a verified clean bill of health. |
-Upstream fix thresholds
+Current reference fix thresholds
+Current reference rules as of 2026-10-21. This table and the current source links are guidance from the rendering checker; they do not reclassify preserved acquisition results.
| Branch | Fixed in |
|---|
| 8.2 | 8.2.35 |
| 8.3 | 8.3.36 |
| 8.4 | 8.4.27 |
| 8.5 | 8.5.12 |
How to read this report
Potential exposure is not confirmed exploitability. Results compare PHP versions that servers advertise
in public headers with upstream fix releases. No exploit payloads were sent. Distributions can backport fixes without changing the
version number, and hidden versions are reported as unknown, not safe. Administrators should verify the installed package and runtime.
-
+