Files
deepseek-harness/packages/storage/README.md
imccyu 0559e0207e chore(storage,workspace): gates — coverage, catalogs, bilingual note
- Per-file 100% coverage across the five new packages (invariant
  companion suites, failure-injection negatives, lifecycle and
  malformed-medium branches).
- Canonical README Model Experience / Known Limitations sections; new
  storage/ and workspace/ group READMEs; packages/README.md rows (budget
  ceiling raised 760 → 790 for the two new groups).
- Cordis catalog/type-link registrations, service-role classification,
  and regenerated catalogs/graphs for the new services and events.
- Agent Note: English body + i18n pairing record; design-sketch fences
  opted out of doc-typecheck as ignore-check.
- Two exactOptionalPropertyTypes/discriminant fixes in new tests.

doc-sync (24 gates), typecheck, hygiene, and the five-package suite
(92 tests) all pass.
2026-07-25 11:08:04 +08:00

1.1 KiB

storage/ — non-session storage family

The storage family persists everything that is not a session event log: a hub where named backends and typed data forms meet. Design record: domain KV storage Agent Note.

Package Role ctx key
storage/ The hub: named backend registry + merge-extensible data-form mounts, backend facet vocabulary, shared conformance suite ctx.storage
storage-json/ JSON backend: one human-readable file per unit, atomic whole-file rewrite registers backend json
storage-sqlite/ SQLite backend: one database hosting all routed units, document-per-row registers backend sqlite
domain/ Domain data form: zod-validated records, per-domain write chain, domain/changed events, backend routing by configuration mounts ctx.storage.domain

Backends own one medium each and expose data-shape facets (kv today; an append-log facet is reserved for the future session-backend migration). Consumers never touch backends directly — they open declared domains through the domain form.