Skip to content

docs: name what is blocked instead of a blanket fail-closed claim - #71

Merged
NSchatz merged 1 commit into
mainfrom
docs/scoped-blocking-wording
Oct 7, 2026
Merged

NSchatz merged 1 commit into
mainfrom
docs/scoped-blocking-wording

Conversation

@NSchatz

@NSchatz NSchatz commented Oct 7, 2026

Copy link
Copy Markdown
Contributor

Replaces the blanket "fails closed" property in the README and docs-content with the cases the library states it blocks. The per-format fail-closed rows and rules (HL7, C-CDA, FHIR, X12, free text) are unchanged. Checked on the published @cosyte/deid 0.1.0 from a clean install outside any repository: on a synthetic HL7 v2 message, OBX-5 and NTE free text and a Z-segment are blocked (DEID_FREETEXT_BLOCKED, DEID_LOCUS_BLOCKED) and none of their text reaches the output.

File Before After
README.md (tagline) a HIPAA-grounded policy engine that fails closed and emits a value-free manifest a HIPAA-grounded policy engine that emits a value-free manifest
README.md a de-identifier is conservative and fails closed. a de-identifier is conservative.
README.md (design) Fail-closed rule: anything uncertain is blocked, never passed through Fail-closed rule: an unrecognized structure, an un-locatable identifier or free text is blocked, never passed through
docs-content/intro.md a de-identifier is conservative; it fails closed. An unrecognized structure or an un-locatable identifier is blocked a de-identifier is conservative: an unrecognized structure or an un-locatable identifier is blocked
docs-content/quickstart.md @cosyte/deid fails closed: anything it cannot confidently handle is blocked In @cosyte/deid, an unrecognized structure or an un-locatable identifier is blocked
docs-content/limitations.md The library fails closed: on any ambiguity it blocks or removes On an unrecognized structure, an un-locatable identifier, an unknown segment or extension, or a free-text blob, the library blocks or removes
docs-content/limitations.md structured-field, fail-closed, policy-driven Safe-Harbor transformation with a value-free manifest, never a leaked patient, never a destroyed clinical value, and never a claim of "de-identified." structured-field, policy-driven Safe-Harbor transformation with a value-free manifest, never a leaked patient, and never a claim of "de-identified."
docs-content/concepts-archetype.md on any ambiguity (an unrecognized structure, ...) on each of these ambiguities (an unrecognized structure, ...)
examples/fail-closed.ts (docblock) anything it cannot confidently handle is blocked or refused each case below is blocked or refused

No runnable block and none of the sentences deidentify-fhir.test.ts reads from limitations.md change. prettier --check passes on README.md and the example. The package.json description changes only with a release.

https://claude.ai/code/session_011dC8vE9axM3hqC8rNEX3W9

- README tagline: "a HIPAA-grounded policy engine that emits a
  value-free manifest"; the overview ends at "a de-identifier is
  conservative"; the design list's fail-closed rule names an
  unrecognized structure, an un-locatable identifier and free text.
- intro and quickstart: "an unrecognized structure or an un-locatable
  identifier is blocked, never passed through as safe".
- limitations: names the cases the library blocks or removes; the
  closing promise reads "structured-field, policy-driven Safe-Harbor
  transformation with a value-free manifest, never a leaked patient, and
  never a claim of de-identified".
- concepts: "on each of these ambiguities".
- examples/fail-closed.ts docblock: "each case below is blocked or
  refused".

Checked on the published 0.1.0 from a clean install: on a synthetic HL7
v2 message, OBX-5 and NTE free text and a Z-segment are blocked
(DEID_FREETEXT_BLOCKED, DEID_LOCUS_BLOCKED) and none of their text
reaches the output.

Claude-Session: https://claude.ai/code/session_011dC8vE9axM3hqC8rNEX3W9
@NSchatz
NSchatz merged commit 266db9b into main Oct 7, 2026
14 checks passed
@NSchatz
NSchatz deleted the docs/scoped-blocking-wording branch October 7, 2026 22:55
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