Skip to content

docs: rewrite the README, and replace the examples with measured output - #18

Merged
abrichr merged 1 commit into
mainfrom
docs-readme-human-rewrite
Aug 28, 2026
Merged

docs: rewrite the README, and replace the examples with measured output#18
abrichr merged 1 commit into
mainfrom
docs-readme-human-rewrite

Conversation

@abrichr

@abrichr abrichr commented Aug 28, 2026

Copy link
Copy Markdown
Member

Part of the README pass across the public repos
(openadapt-flow#423
has the diagnosis).

The prose changes are the smaller half of this. The examples were wrong.

What I found

I installed openadapt-privacy[presidio]==1.0.3 from PyPI, downloaded
en_core_web_sm, and ran every example in the README. Four of the nine rows in
the "Example Inputs & Outputs" table do not produce what the table says:

Documented Actual, 1.0.3
SSN: 923-45-6789SSN: <US_SSN> <ORGANIZATION>: <US_SSN>
Card: 4532-1234-5678-9012Card: <CREDIT_CARD> Card: <DATE_TIME>
DOB: 01/15/1985DOB: <DATE_TIME> <ORGANIZATION>: <DATE_TIME>
635526789012<US_BANK_NUMBER> <DATE_TIME>
A123-456-789-012<US_DRIVER_LICENSE> <ORGANIZATION>

The card number is the one I would worry about. It does get redacted, so
nothing leaks, but it comes back as DATE_TIME rather than CREDIT_CARD. A
Luhn-valid 4111111111111111 behaves the same way. Anyone who writes a policy
that keys off the placeholder name would be building on a false premise, so the
README now says so explicitly instead of listing a clean table.

Second one, and I think this is a real bug rather than a docs bug: the
scrub_dict example uses the text key. text is in SCRUB_KEYS_HTML and is
scrubbed as character-separated action text joined by ACTION_TEXT_SEP, so the
documented input comes back as "<-P-E-R-S-O-N->-:- -<-E-M-A-I-L-_-A-D-D-R-E-S-S->".
The README showed clean output. I switched the example to title / tooltip /
value, which behave, and noted the caveat. Worth fixing in the code.

Prose changes

Cut the status admonition and the stack table that appears word for word in
five other repos. Cut the substrate sentence claiming "RDP and Windows replay
are early, and Citrix is exploratory" — flow's docs/PRODUCT_STATUS.md records
counted 3/3 acceptance for Windows, macOS, Linux and RDP, so that line was
stale in both directions.

Promoted the honest caveat (synthetic regression evidence, not clinical
validation; scrubbing is one control in a reviewed egress process) from a
paragraph in the middle to its own section near the top, because it's the thing
a reader most needs before they trust this.

Merged the three tables that each demonstrated the same thing into one worked
example with real output.

312 lines to 212. Zero em dashes.

Same structural rewrite as openadapt-flow. Two accuracy fixes matter more than
the prose:

- The example table claimed outputs the package does not produce. Against
  openadapt-privacy 1.0.3 from PyPI: 'SSN: 923-45-6789' scrubs to
  '<ORGANIZATION>: <US_SSN>', not 'SSN: <US_SSN>'; 'Card: 4532-1234-5678-9012'
  scrubs to 'Card: <DATE_TIME>', not '<CREDIT_CARD>'; the US_BANK_NUMBER and
  US_DRIVER_LICENSE rows also produce a different entity than documented. Every
  example in the file is now a real captured result.
- The scrub_dict example used the 'text' key, which is treated as
  character-separated action text joined by ACTION_TEXT_SEP. The real output is
  hyphenated one character at a time. The example now uses keys that behave,
  and the caveat is stated.

Also removed the substrate sentence claiming RDP and Windows replay are early
and Citrix is exploratory; flow's docs/PRODUCT_STATUS.md records counted 3/3
acceptance for Windows, macOS, Linux, and RDP.

312 lines to 212.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@abrichr
abrichr merged commit 195d998 into main Aug 28, 2026
4 checks passed
@abrichr
abrichr deleted the docs-readme-human-rewrite branch August 28, 2026 15:32
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant