@tinytars/vault 0.1.18 → 0.1.19

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/README.md +35 -19
  2. package/package.json +1 -1
package/README.md CHANGED
@@ -14,28 +14,44 @@ Maintained by the [Tiny Tars Foundation](https://tinytars.foundation), a 501(c)(
14
14
 
15
15
  ## Why
16
16
 
17
- ### The healthcare deployment this was built for
18
-
19
- This package was extracted from a health-records app, and that origin is worth stating plainly
20
- rather than hiding: it's a real, fully worked use case, not a footnote. Map its vocabulary onto
21
- this package's generic one and the fit is exact. The vault **owner** is a patient; a **provider**
22
- link is a treating clinician's standing access to that patient's record; a **support** link is a
23
- care-team member's time-boxed access, handled by `break-glass.ts`'s grant/check/revoke lifecycle
24
- so a temporary exception doesn't quietly become a permanent one; the audit log in
25
- `adapters/d1/audit.ts` is shaped to satisfy the FTC Health Breach Notification Rule's
26
- disclosure-logging requirement who accessed whose record and why, so a breach can be scoped to
27
- affected individuals.
17
+ ### The HIPAA-adjacent deployment's vault
18
+
19
+ This package was extracted from a health-records app built against HIPAA-adjacent constraints,
20
+ and that origin is worth stating plainly: it's a real, fully worked use case, not a footnote.
21
+ The fit is exact: the vault **owner** is the person whose record it is; a **provider** link is a
22
+ treating professional's standing access to that record; a **support** link is a colleague's
23
+ time-boxed access, handled by `break-glass.ts`'s grant/check/revoke lifecycle so a temporary
24
+ exception doesn't quietly become a permanent one.
25
+
26
+ And the fit isn't just structural four of the package's primitives map onto four things a
27
+ HIPAA-adjacent deployment specifically needs:
28
+
29
+ #### Satisfies the FTC Health Breach Notification Rule
30
+
31
+ The audit log in `adapters/d1/audit.ts` is shaped to satisfy the Rule's disclosure-logging
32
+ requirement directly — who accessed whose record and why, so a breach can be scoped to affected
33
+ individuals.
34
+
35
+ #### Zero-knowledge storage
28
36
 
29
37
  `crypto.ts` gives that app a zero-knowledge vault — the storage operator holds ciphertext and
30
38
  never a key or usable plaintext, which matters when the payload is a medical record.
39
+
40
+ #### Consent-based sharing
41
+
31
42
  `envelope-access.ts` gives it consent-based sharing — access is a per-principal, revocable
32
- wrapped-key grant, not a shared secret or a role flag, which is what "the patient controls who
33
- sees their record" actually requires at the implementation level. `break-glass.ts` gives it the
34
- piece hand-rolled HIPAA-adjacent systems get wrong most often: a time-boxed grant with the TTL
35
- clamp, self-expiry, and audit trail built in. None of this makes the package itself HIPAA-
36
- compliant — it's a primitive an adopter builds compliant handling on top of, not a compliance
37
- product in its own right — but the shape it ships is exactly the shape that adopter needs, not
38
- something assembled from unrelated parts after the fact.
43
+ wrapped-key grant, not a shared secret or a role flag, which is what "the record's owner controls
44
+ who sees it" actually requires at the implementation level.
45
+
46
+ #### Time-boxed emergency access
47
+
48
+ `break-glass.ts` gives it the piece hand-rolled HIPAA-adjacent systems get wrong most often: a
49
+ time-boxed grant with the TTL clamp, self-expiry, and audit trail built in.
50
+
51
+ None of this makes the package itself HIPAA-compliant — it's a primitive an adopter builds
52
+ compliant handling on top of, not a compliance product in its own right — but the shape it ships
53
+ is exactly the shape that adopter needs, not something assembled from unrelated parts after the
54
+ fact.
39
55
 
40
56
  ### Beyond health
41
57
 
@@ -49,7 +65,7 @@ Concretely, beyond the healthcare case above:
49
65
  - **Outside counsel** reviewing a client's encrypted case files, access granted for the matter's
50
66
  duration and revoked when it closes.
51
67
  - **An accountant** getting temporary access to a household's financial records at tax time,
52
- through the same time-boxed grant `break-glass.ts` gives a clinician.
68
+ through the same time-boxed grant `break-glass.ts` gives a treating professional.
53
69
  - **A corporate IT admin** granted standing access to an employee's HR file for the audit trail
54
70
  it creates, or temporary access during an offboarding review.
55
71
  - **A SaaS support agent** getting time-boxed access to a customer's account data to debug a
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tinytars/vault",
3
- "version": "0.1.18",
3
+ "version": "0.1.19",
4
4
  "description": "Runtime-agnostic key derivation, authenticated envelope encryption, and storage-agnostic access-control contracts for per-user encrypted data.",
5
5
  "license": "MIT",
6
6
  "type": "module",