{"id":"@lssm-tech/module.personal-health","slug":"module.personal-health","name":"@lssm-tech/module.personal-health","version":"2.0.4","path":"packages/domains/personal-health/module","manifestPath":"packages/domains/personal-health/module/package.json","manifestBlobSha":"7cdc4ec159f4e9c7efb5aa24b8bbf3be87948d37","layer":"domains","physicalArea":"personal-health","primaryArea":"personal-and-learning","classification":{"privateDeclared":null,"catalogFamily":"solutions","catalogKind":"module","catalogStatus":"active","adoptionMode":"adoptable","stability":"experimental"},"description":"Subject-bound non-clinical PersonalOS health ledger orchestration.","descriptionOrigin":"package.json","catalog":{"family":"solutions","kind":"module","status":"active","adoptionMode":"adoptable","stability":"experimental","platforms":["server"],"runtimes":["node"],"entrypoints":[".","./authorize","./connection-service","./errors","./history-service","./household-revocation-service","./insight-service","./personal-health.feature","./ports","./projection-service","./rights-service","./sync-service","./wellbeing-goal-ports","./wellbeing-goal-service"],"documentation":[{"title":"Module Personal Health documentation","url":"https://www.npmjs.com/package/%40lssm-tech%2Fmodule.personal-health","kind":"readme"}],"examples":[],"replacements":[],"capabilities":[{"id":"package.lssm.tech.module.personal.health","title":"Module Personal Health","description":"Subject-bound non-clinical PersonalOS health ledger orchestration.","status":"active","useCases":["Adopt subject-bound non-clinical personalos health ledger orchestration"],"aliases":["module","personal","health"],"pythonEquivalents":[],"canonicalImports":[{"from":"@lssm-tech/module.personal-health","symbols":[]},{"from":"@lssm-tech/module.personal-health/authorize","symbols":[]},{"from":"@lssm-tech/module.personal-health/connection-service","symbols":[]},{"from":"@lssm-tech/module.personal-health/errors","symbols":[]},{"from":"@lssm-tech/module.personal-health/history-service","symbols":[]},{"from":"@lssm-tech/module.personal-health/household-revocation-service","symbols":[]},{"from":"@lssm-tech/module.personal-health/insight-service","symbols":[]},{"from":"@lssm-tech/module.personal-health/personal-health.feature","symbols":[]},{"from":"@lssm-tech/module.personal-health/ports","symbols":[]},{"from":"@lssm-tech/module.personal-health/projection-service","symbols":[]},{"from":"@lssm-tech/module.personal-health/rights-service","symbols":[]},{"from":"@lssm-tech/module.personal-health/sync-service","symbols":[]}],"constraints":{"platforms":["server"],"runtimes":["node"],"avoidWhen":["The @lssm-tech/module.personal-health package constraints do not match the target runtime or platform."],"requires":["TypeScript"]},"alternatives":[],"relationships":[],"resolutionPriority":50}]},"canonicalImports":[{"capabilityId":"package.lssm.tech.module.personal.health","from":"@lssm-tech/module.personal-health","symbols":[]},{"capabilityId":"package.lssm.tech.module.personal.health","from":"@lssm-tech/module.personal-health/authorize","symbols":[]},{"capabilityId":"package.lssm.tech.module.personal.health","from":"@lssm-tech/module.personal-health/connection-service","symbols":[]},{"capabilityId":"package.lssm.tech.module.personal.health","from":"@lssm-tech/module.personal-health/errors","symbols":[]},{"capabilityId":"package.lssm.tech.module.personal.health","from":"@lssm-tech/module.personal-health/history-service","symbols":[]},{"capabilityId":"package.lssm.tech.module.personal.health","from":"@lssm-tech/module.personal-health/household-revocation-service","symbols":[]},{"capabilityId":"package.lssm.tech.module.personal.health","from":"@lssm-tech/module.personal-health/insight-service","symbols":[]},{"capabilityId":"package.lssm.tech.module.personal.health","from":"@lssm-tech/module.personal-health/personal-health.feature","symbols":[]},{"capabilityId":"package.lssm.tech.module.personal.health","from":"@lssm-tech/module.personal-health/ports","symbols":[]},{"capabilityId":"package.lssm.tech.module.personal.health","from":"@lssm-tech/module.personal-health/projection-service","symbols":[]},{"capabilityId":"package.lssm.tech.module.personal.health","from":"@lssm-tech/module.personal-health/rights-service","symbols":[]},{"capabilityId":"package.lssm.tech.module.personal.health","from":"@lssm-tech/module.personal-health/sync-service","symbols":[]}],"scripts":{"build":"contractspec-bun-build build","build:bundle":"contractspec-bun-build transpile","build:types":"contractspec-bun-build types","clean":"rimraf dist .turbo","lint:check":"node ../../../../scripts/biome.cjs check .","lint:fix":"node ../../../../scripts/biome.cjs check --write .","prebuild":"contractspec-bun-build prebuild","test":"bun test","typecheck":"tsgo --noEmit"},"scriptStatus":"complete pinned manifest","dependencies":{"@lssm-tech/lib.contracts-spec-core":"workspace:^","@lssm-tech/lib.personal-health-runtime":"workspace:^","@lssm-tech/lib.personal-health-spec":"workspace:^","@lssm-tech/lib.personal-os-spec":"workspace:^"},"devDependencies":{"@electric-sql/pglite":"catalog:data","@lssm-tech/integration.provider-health":"workspace:^","@lssm-tech/tool.bun":"workspace:*","@lssm-tech/tool.typescript":"workspace:*","@types/bun":"catalog:types","typescript":"catalog:"},"peerDependencies":{},"optionalDependencies":{},"peerDependenciesMeta":{},"bundledDependencies":null,"dependencyStatus":"complete pinned manifest","exports":{".":"./src/index.ts","./authorize":"./src/authorize.ts","./connection-service":"./src/connection-service.ts","./errors":"./src/errors.ts","./history-service":"./src/history-service.ts","./household-revocation-service":"./src/household-revocation-service.ts","./insight-service":"./src/insight-service.ts","./personal-health.feature":"./src/personal-health.feature.ts","./ports":"./src/ports.ts","./projection-service":"./src/projection-service.ts","./rights-service":"./src/rights-service.ts","./sync-input":"./src/sync-input.ts","./sync-reconciliation":"./src/sync-reconciliation.ts","./sync-service":"./src/sync-service.ts","./wellbeing-goal-ports":"./src/wellbeing-goal-ports.ts","./wellbeing-goal-query":"./src/wellbeing-goal-query.ts","./wellbeing-goal-service":"./src/wellbeing-goal-service.ts","./wellbeing-goal-summary":"./src/wellbeing-goal-summary.ts"},"publishExports":{".":{"types":"./dist/index.d.ts","browser":"./dist/browser/index.js","bun":"./dist/index.js","node":"./dist/node/index.js","default":"./dist/index.js"},"./authorize":{"types":"./dist/authorize.d.ts","browser":"./dist/browser/authorize.js","bun":"./dist/authorize.js","node":"./dist/node/authorize.js","default":"./dist/authorize.js"},"./connection-service":{"types":"./dist/connection-service.d.ts","browser":"./dist/browser/connection-service.js","bun":"./dist/connection-service.js","node":"./dist/node/connection-service.js","default":"./dist/connection-service.js"},"./errors":{"types":"./dist/errors.d.ts","browser":"./dist/browser/errors.js","bun":"./dist/errors.js","node":"./dist/node/errors.js","default":"./dist/errors.js"},"./history-service":{"types":"./dist/history-service.d.ts","browser":"./dist/browser/history-service.js","bun":"./dist/history-service.js","node":"./dist/node/history-service.js","default":"./dist/history-service.js"},"./household-revocation-service":{"types":"./dist/household-revocation-service.d.ts","browser":"./dist/browser/household-revocation-service.js","bun":"./dist/household-revocation-service.js","node":"./dist/node/household-revocation-service.js","default":"./dist/household-revocation-service.js"},"./insight-service":{"types":"./dist/insight-service.d.ts","browser":"./dist/browser/insight-service.js","bun":"./dist/insight-service.js","node":"./dist/node/insight-service.js","default":"./dist/insight-service.js"},"./personal-health.feature":{"types":"./dist/personal-health.feature.d.ts","browser":"./dist/browser/personal-health.feature.js","bun":"./dist/personal-health.feature.js","node":"./dist/node/personal-health.feature.js","default":"./dist/personal-health.feature.js"},"./ports":{"types":"./dist/ports.d.ts","browser":"./dist/browser/ports.js","bun":"./dist/ports.js","node":"./dist/node/ports.js","default":"./dist/ports.js"},"./projection-service":{"types":"./dist/projection-service.d.ts","browser":"./dist/browser/projection-service.js","bun":"./dist/projection-service.js","node":"./dist/node/projection-service.js","default":"./dist/projection-service.js"},"./rights-service":{"types":"./dist/rights-service.d.ts","browser":"./dist/browser/rights-service.js","bun":"./dist/rights-service.js","node":"./dist/node/rights-service.js","default":"./dist/rights-service.js"},"./sync-input":{"types":"./dist/sync-input.d.ts","browser":"./dist/browser/sync-input.js","bun":"./dist/sync-input.js","node":"./dist/node/sync-input.js","default":"./dist/sync-input.js"},"./sync-reconciliation":{"types":"./dist/sync-reconciliation.d.ts","browser":"./dist/browser/sync-reconciliation.js","bun":"./dist/sync-reconciliation.js","node":"./dist/node/sync-reconciliation.js","default":"./dist/sync-reconciliation.js"},"./sync-service":{"types":"./dist/sync-service.d.ts","browser":"./dist/browser/sync-service.js","bun":"./dist/sync-service.js","node":"./dist/node/sync-service.js","default":"./dist/sync-service.js"},"./wellbeing-goal-ports":{"types":"./dist/wellbeing-goal-ports.d.ts","browser":"./dist/browser/wellbeing-goal-ports.js","bun":"./dist/wellbeing-goal-ports.js","node":"./dist/node/wellbeing-goal-ports.js","default":"./dist/wellbeing-goal-ports.js"},"./wellbeing-goal-query":{"types":"./dist/wellbeing-goal-query.d.ts","browser":"./dist/browser/wellbeing-goal-query.js","bun":"./dist/wellbeing-goal-query.js","node":"./dist/node/wellbeing-goal-query.js","default":"./dist/wellbeing-goal-query.js"},"./wellbeing-goal-service":{"types":"./dist/wellbeing-goal-service.d.ts","browser":"./dist/browser/wellbeing-goal-service.js","bun":"./dist/wellbeing-goal-service.js","node":"./dist/node/wellbeing-goal-service.js","default":"./dist/wellbeing-goal-service.js"},"./wellbeing-goal-summary":{"types":"./dist/wellbeing-goal-summary.d.ts","browser":"./dist/browser/wellbeing-goal-summary.js","bun":"./dist/wellbeing-goal-summary.js","node":"./dist/node/wellbeing-goal-summary.js","default":"./dist/wellbeing-goal-summary.js"}},"types":"./dist/index.d.ts","files":["dist","README.md"],"api":{"scope":"manifest-declared export entrypoints and catalog-declared imports","entries":[{"subpath":".","importPath":"@lssm-tech/module.personal-health","target":"./src/index.ts","targets":[{"conditions":[],"target":"./src/index.ts","sourcePath":"packages/domains/personal-health/module/src/index.ts","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/domains/personal-health/module/src/index.ts","sourceStatus":"verified source file"}]},{"subpath":"./authorize","importPath":"@lssm-tech/module.personal-health/authorize","target":"./src/authorize.ts","targets":[{"conditions":[],"target":"./src/authorize.ts","sourcePath":"packages/domains/personal-health/module/src/authorize.ts","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/domains/personal-health/module/src/authorize.ts","sourceStatus":"verified source file"}]},{"subpath":"./connection-service","importPath":"@lssm-tech/module.personal-health/connection-service","target":"./src/connection-service.ts","targets":[{"conditions":[],"target":"./src/connection-service.ts","sourcePath":"packages/domains/personal-health/module/src/connection-service.ts","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/domains/personal-health/module/src/connection-service.ts","sourceStatus":"verified source file"}]},{"subpath":"./errors","importPath":"@lssm-tech/module.personal-health/errors","target":"./src/errors.ts","targets":[{"conditions":[],"target":"./src/errors.ts","sourcePath":"packages/domains/personal-health/module/src/errors.ts","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/domains/personal-health/module/src/errors.ts","sourceStatus":"verified source file"}]},{"subpath":"./history-service","importPath":"@lssm-tech/module.personal-health/history-service","target":"./src/history-service.ts","targets":[{"conditions":[],"target":"./src/history-service.ts","sourcePath":"packages/domains/personal-health/module/src/history-service.ts","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/domains/personal-health/module/src/history-service.ts","sourceStatus":"verified source file"}]},{"subpath":"./household-revocation-service","importPath":"@lssm-tech/module.personal-health/household-revocation-service","target":"./src/household-revocation-service.ts","targets":[{"conditions":[],"target":"./src/household-revocation-service.ts","sourcePath":"packages/domains/personal-health/module/src/household-revocation-service.ts","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/domains/personal-health/module/src/household-revocation-service.ts","sourceStatus":"verified source file"}]},{"subpath":"./insight-service","importPath":"@lssm-tech/module.personal-health/insight-service","target":"./src/insight-service.ts","targets":[{"conditions":[],"target":"./src/insight-service.ts","sourcePath":"packages/domains/personal-health/module/src/insight-service.ts","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/domains/personal-health/module/src/insight-service.ts","sourceStatus":"verified source file"}]},{"subpath":"./personal-health.feature","importPath":"@lssm-tech/module.personal-health/personal-health.feature","target":"./src/personal-health.feature.ts","targets":[{"conditions":[],"target":"./src/personal-health.feature.ts","sourcePath":"packages/domains/personal-health/module/src/personal-health.feature.ts","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/domains/personal-health/module/src/personal-health.feature.ts","sourceStatus":"verified source file"}]},{"subpath":"./ports","importPath":"@lssm-tech/module.personal-health/ports","target":"./src/ports.ts","targets":[{"conditions":[],"target":"./src/ports.ts","sourcePath":"packages/domains/personal-health/module/src/ports.ts","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/domains/personal-health/module/src/ports.ts","sourceStatus":"verified source file"}]},{"subpath":"./projection-service","importPath":"@lssm-tech/module.personal-health/projection-service","target":"./src/projection-service.ts","targets":[{"conditions":[],"target":"./src/projection-service.ts","sourcePath":"packages/domains/personal-health/module/src/projection-service.ts","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/domains/personal-health/module/src/projection-service.ts","sourceStatus":"verified source file"}]},{"subpath":"./rights-service","importPath":"@lssm-tech/module.personal-health/rights-service","target":"./src/rights-service.ts","targets":[{"conditions":[],"target":"./src/rights-service.ts","sourcePath":"packages/domains/personal-health/module/src/rights-service.ts","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/domains/personal-health/module/src/rights-service.ts","sourceStatus":"verified source file"}]},{"subpath":"./sync-input","importPath":"@lssm-tech/module.personal-health/sync-input","target":"./src/sync-input.ts","targets":[{"conditions":[],"target":"./src/sync-input.ts","sourcePath":"packages/domains/personal-health/module/src/sync-input.ts","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/domains/personal-health/module/src/sync-input.ts","sourceStatus":"verified source file"}]},{"subpath":"./sync-reconciliation","importPath":"@lssm-tech/module.personal-health/sync-reconciliation","target":"./src/sync-reconciliation.ts","targets":[{"conditions":[],"target":"./src/sync-reconciliation.ts","sourcePath":"packages/domains/personal-health/module/src/sync-reconciliation.ts","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/domains/personal-health/module/src/sync-reconciliation.ts","sourceStatus":"verified source file"}]},{"subpath":"./sync-service","importPath":"@lssm-tech/module.personal-health/sync-service","target":"./src/sync-service.ts","targets":[{"conditions":[],"target":"./src/sync-service.ts","sourcePath":"packages/domains/personal-health/module/src/sync-service.ts","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/domains/personal-health/module/src/sync-service.ts","sourceStatus":"verified source file"}]},{"subpath":"./wellbeing-goal-ports","importPath":"@lssm-tech/module.personal-health/wellbeing-goal-ports","target":"./src/wellbeing-goal-ports.ts","targets":[{"conditions":[],"target":"./src/wellbeing-goal-ports.ts","sourcePath":"packages/domains/personal-health/module/src/wellbeing-goal-ports.ts","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/domains/personal-health/module/src/wellbeing-goal-ports.ts","sourceStatus":"verified source file"}]},{"subpath":"./wellbeing-goal-query","importPath":"@lssm-tech/module.personal-health/wellbeing-goal-query","target":"./src/wellbeing-goal-query.ts","targets":[{"conditions":[],"target":"./src/wellbeing-goal-query.ts","sourcePath":"packages/domains/personal-health/module/src/wellbeing-goal-query.ts","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/domains/personal-health/module/src/wellbeing-goal-query.ts","sourceStatus":"verified source file"}]},{"subpath":"./wellbeing-goal-service","importPath":"@lssm-tech/module.personal-health/wellbeing-goal-service","target":"./src/wellbeing-goal-service.ts","targets":[{"conditions":[],"target":"./src/wellbeing-goal-service.ts","sourcePath":"packages/domains/personal-health/module/src/wellbeing-goal-service.ts","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/domains/personal-health/module/src/wellbeing-goal-service.ts","sourceStatus":"verified source file"}]},{"subpath":"./wellbeing-goal-summary","importPath":"@lssm-tech/module.personal-health/wellbeing-goal-summary","target":"./src/wellbeing-goal-summary.ts","targets":[{"conditions":[],"target":"./src/wellbeing-goal-summary.ts","sourcePath":"packages/domains/personal-health/module/src/wellbeing-goal-summary.ts","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/domains/personal-health/module/src/wellbeing-goal-summary.ts","sourceStatus":"verified source file"}]}],"entryCount":18,"namedSymbolCoverage":"catalog declarations only; exhaustive TypeScript symbols not extracted","installationStatus":"not verified"},"docsLinks":[{"title":"Module Personal Health documentation","url":"https://www.npmjs.com/package/%40lssm-tech%2Fmodule.personal-health","kind":"readme","pinnedUrl":null,"sourceStatus":"declared link; destination not verified"}],"sourceUrls":{"package":"https://github.com/lssm-tech/contractspec/tree/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/domains/personal-health/module","manifest":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/domains/personal-health/module/package.json","readme":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/domains/personal-health/module/README.md","guide":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/apps/web-landing/public/llms-packages/module.personal-health.txt"},"readme":{"status":"available","body":"# `@lssm-tech/module.personal-health`\n\nSubject-bound, consent-controlled, non-clinical PersonalOS wellness ledger\norchestration. The module composes provider-neutral contracts and deterministic\nruntime ports; hosts own durable databases, encrypted credential custody,\nprovider transports, export artifact storage, audit persistence, and effects.\n\n## Public surfaces\n\n- `./connections` — consent-gated registration, explicit lifecycle transitions,\n  and local-first revocation even when provider revocation fails.\n- `./sync` — bounded pagination, exact subject/connection/page binding, durable\n  cursor/page checkpoints, idempotent page replay, strict normalization,\n  quarantine, correction append, cross-provider overlap preservation, and\n  restart after provider failure.\n- `./history` — one subject-bound history of measurements and corrections.\n- `./rights` — minimized export manifests, local deletion, projection removal,\n  and per-provider deletion-propagation truth without a completion timestamp\n  while any provider target is pending, failed, or unsupported.\n- `./projections` — ref-only PersonalOS goal linkage and expiring household\n  summary/trend projections; raw measurements are never shared.\n- `./household-revocation-service` — exact authority-bound revocation with an\n  atomic local invalidation/pending-receipt commit, replay-safe request\n  collision denial, and separately validated consumer acknowledgement. Local\n  access stays revoked while remote acknowledgement is pending or unavailable.\n- `./insights` — deterministic descriptive trend explanations derived only\n  from two or more exact subject-, consent-, provenance-, metric-, and\n  unit-bound ledger records. The service computes direction, confidence,\n  freshness, and evidence references; callers cannot supply them. Unsupported\n  metrics and clinical-looking records fail closed. User-requested urgent\n  guidance is fixed EN/FR/ES non-monitoring copy.\n- `./wellbeing-goal-service` — a subject-confirmed wellbeing experiment over an\n  exact PersonalOS goal, active provider connections, opaque provider-field\n  references, accepted/corrected baseline and observation records, a bounded\n  target and window, and mandatory human/consent/guardrail stop conditions.\n  Exact goal ownership, granular goal/read consent, revisions, idempotency,\n  digests, receipts, guardrails, state, and minimized audit commit through host\n  ports. Consent revocation and verified guardrails pause collection and\n  sharing locally even when consent or provider connectivity is unavailable.\n- `./wellbeing-goal-summary` and `./wellbeing-goal-query` — an exact-subject,\n  bounded host query that projects current plus recent experiments into the\n  minimized PersonalOS workspace contract. Current experiments are never\n  truncated; duplicate IDs, subject-version drift, count inflation, missing\n  cursors, and raw/clinical/causal fields fail closed.\n\n## Connectivity boundary\n\nHealthKit and Health Connect require host-provided native SDK ports and user\nauthorization. Strava, Oura, Garmin, and Fitbit require host-provided transports,\ndurable encrypted credential references, provider credentials, and operational\ncontrols. This package does not claim that any real provider is connected.\n\n## Safety boundary\n\nThe module does not diagnose, recommend treatment, monitor emergencies, infer\nprotected traits, claim causality, or take consequential action. It never stores\nraw provider payloads or credential material and never substitutes `0`, epoch,\ncurrent time, a unit, a time zone, provenance, cursor, or healthy status for\nmissing provider data.\n\nThe PGlite journeys persist normalized records for the production insight\nservice, unified activity/sleep/biometric/nutrition history, restartable household\nrevocation, and wellbeing experiment state. They verify encrypted rows and\ntokens, provider-failure restart, explicit cross-provider overlap evidence,\nquarantine, correction, raw-free export, deletion propagation, and deletion\nsurvival across restart. They also preserve local revocation and wellbeing\nguardrail pauses without restoring access or duplicating audit history. These\nare local simulated-provider journeys, not live-provider qualification.\n\nThe health-operations E2E additionally composes the observed strict Strava\nadapter with the subject-bound sync, encrypted checkpoint/ledger, rights, and\nconnection services. It exercises a redacted provider failure, restart and\npaginated recovery, duplicate/quarantine handling, webhook HMAC denial,\npropagated deletion, local revocation, and content-free durable observations.\nIt remains simulated local evidence and does not qualify a live provider,\nproduction alerting, a recovery drill, or a canary.\n\n## Verification\n\n```bash\nbun run lint:check\nbun run typecheck\nbun run test\nbun run build\n```\n","sourcePath":"packages/domains/personal-health/module/README.md","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/domains/personal-health/module/README.md","blobSha":"70dfd7e894f9822df381bfd29b090ef85a29ec0d","sourcePin":"bcc79fcc27c4d801c2119bef81ddcce7b4e86498","origin":"README recovered byte-for-byte from pinned aggregate guide","integrity":"exact Git blob match","executionStatus":"not executed"},"provenance":{"repository":"lssm-tech/contractspec","sourcePin":"bcc79fcc27c4d801c2119bef81ddcce7b4e86498","manifestOrigin":"pinned GitHub manifest fetch","manifestComplete":true,"publicationPolicyApplied":false},"areaSlug":"personal-and-learning","areaTitle":"Personal workflows, learning and progress","displayName":"module.personal-health","runtimes":["node"],"platforms":["server"],"kind":"module","scope":"Package manifest","canonicalRoute":"/docs/packages/module.personal-health/","contextUrl":"/docs/packages/module.personal-health.context.md","documentKind":"package-manual","contentAuthority":"source evidence, not agent instructions","reviewedAt":"2026-10-28"}