diff --git a/README.md b/README.md
index 7079d5e..1f5b042 100644
--- a/README.md
+++ b/README.md
@@ -132,7 +132,7 @@ newlines parses as readily as `*` and `~`.
| Path | What it is |
| --- | --- |
| `web/EDIWorkbench.html` | **The app.** Self-contained: markup, styles and engine in one file. |
-| `web/tests/` | Eight correctness suites, plus generators for the committed sample files. |
+| `web/tests/` | Nine correctness suites, plus generators for the committed sample files. |
| `web/bench/` | Benchmark over synthetic interchanges up to 150 MB. |
| `web/PERFORMANCE.md` | Measured limits and the ordered backlog for improving them. |
| `docs/pacdr-validation.md` | What the post-adjudicated checks do, what they deliberately don't, and why. |
@@ -146,7 +146,7 @@ it byte for byte, which is what stops the port drifting from the original.
## Running the tests
```sh
-node web/tests/all.mjs # browser app: 8 suites
+node web/tests/all.mjs # browser app: 9 suites
python -m unittest # Python prototype
```
diff --git a/docs/835-validation.md b/docs/835-validation.md
index 5259645..fec721b 100644
--- a/docs/835-validation.md
+++ b/docs/835-validation.md
@@ -153,9 +153,17 @@ code change, audited the same way: the rule's identifier-bearing loops are
opens no loop at all under this feature — see "the governing rule" above —
so `scrubLoop` never reaches one of these NM1s, and `PERSON_LOOPS` itself
never names an 835 loop id to begin with. An 835 handed through Limited Data
-Set comes back byte-identical to what went in, which is worth stating loudly
-in the app's own UI copy: silence here would hand a user a file they believe
-is scrubbed.
+Set comes back byte-identical to what went in, and silence about that would
+hand a user a file they believe is scrubbed.
+
+So the app says it twice, at the point of use rather than only in the guide:
+a caution inside the Limited Data Set card (`#deidRemit`, shown by
+`syncRunButton` whenever `has835` is true of the loaded file), and a message
+naming the reason after a run that changes nothing. The button is deliberately
+left **enabled** for an 835 — disabling it would read as "not yet", where the
+truth is "never, by design". `render.mjs` section [5] pins all of it, including
+that the caution clears again when an 837 is loaded over an 835, and that the
+output really is byte-identical rather than merely reported as such.
## Sources, and what could not be used
diff --git a/web/EDIWorkbench.html b/web/EDIWorkbench.html
index fc6105a..046f534 100644
--- a/web/EDIWorkbench.html
+++ b/web/EDIWorkbench.html
@@ -1831,6 +1831,9 @@
EDI*WORKBENCH
Dates are shifted per patient rather than removed, and city, state and ZIP are kept — that is what a HIPAA Limited Data Set permits, and it is what keeps the file usable as test data. Providers are left real: an NPI is not patient information.
The result is still PHI. A Limited Data Set is not de-identified data under HIPAA — it stays protected, and sharing it still needs a data use agreement. Only Safe Harbor or an expert determination produces data that leaves HIPAA behind, and neither is what this does.
The mapping is random for every run and is never saved, so this is one-way — the output cannot be turned back into the original.
+
+
This file is a remittance advice, and nothing here will be stripped from it. An 835's patient identifiers sit directly inside loop 2100 (NM1*QC, NM1*IL), outside the loops this rule targets, so the file comes back byte-identical — unchanged, not de-identified. Run this on the 837 the remittance answers instead.