{"id":"@lssm-tech/module.personal-learning","slug":"module.personal-learning","name":"@lssm-tech/module.personal-learning","version":"2.0.4","path":"packages/domains/personal-agency/personal-learning","manifestPath":"packages/domains/personal-agency/personal-learning/package.json","manifestBlobSha":"ff25f544fa0e9717fde7c8443a8eab6916762510","layer":"domains","physicalArea":"personal-agency","primaryArea":"personal-and-learning","classification":{"privateDeclared":null,"catalogFamily":"solutions","catalogKind":"module","catalogStatus":"active","adoptionMode":"adoptable","stability":"experimental"},"description":"Consent-bound PersonalOS learning adapter and reversible coaching runtime.","descriptionOrigin":"package.json","catalog":{"family":"solutions","kind":"module","status":"active","adoptionMode":"adoptable","stability":"experimental","platforms":["server"],"runtimes":["node"],"entrypoints":[".","./catalog","./coaching","./commands","./contracts","./guard","./personal-learning.feature","./portability","./ports","./progress","./queries","./reducer","./runtime","./state"],"documentation":[{"title":"Module Personal Learning documentation","url":"https://www.npmjs.com/package/%40lssm-tech%2Fmodule.personal-learning","kind":"readme"}],"examples":[],"replacements":[],"capabilities":[{"id":"package.lssm.tech.module.personal.learning","title":"Module Personal Learning","description":"Consent-bound PersonalOS learning adapter and reversible coaching runtime.","status":"active","useCases":["Adopt consent-bound personalos learning adapter and reversible coaching runtime"],"aliases":["module","personal","learning"],"pythonEquivalents":[],"canonicalImports":[{"from":"@lssm-tech/module.personal-learning","symbols":[]},{"from":"@lssm-tech/module.personal-learning/catalog","symbols":[]},{"from":"@lssm-tech/module.personal-learning/coaching","symbols":[]},{"from":"@lssm-tech/module.personal-learning/commands","symbols":[]},{"from":"@lssm-tech/module.personal-learning/contracts","symbols":[]},{"from":"@lssm-tech/module.personal-learning/guard","symbols":[]},{"from":"@lssm-tech/module.personal-learning/personal-learning.feature","symbols":[]},{"from":"@lssm-tech/module.personal-learning/portability","symbols":[]},{"from":"@lssm-tech/module.personal-learning/ports","symbols":[]},{"from":"@lssm-tech/module.personal-learning/progress","symbols":[]},{"from":"@lssm-tech/module.personal-learning/queries","symbols":[]},{"from":"@lssm-tech/module.personal-learning/reducer","symbols":[]}],"constraints":{"platforms":["server"],"runtimes":["node"],"avoidWhen":["The @lssm-tech/module.personal-learning package constraints do not match the target runtime or platform."],"requires":["TypeScript"]},"alternatives":[],"relationships":[],"resolutionPriority":50}]},"canonicalImports":[{"capabilityId":"package.lssm.tech.module.personal.learning","from":"@lssm-tech/module.personal-learning","symbols":[]},{"capabilityId":"package.lssm.tech.module.personal.learning","from":"@lssm-tech/module.personal-learning/catalog","symbols":[]},{"capabilityId":"package.lssm.tech.module.personal.learning","from":"@lssm-tech/module.personal-learning/coaching","symbols":[]},{"capabilityId":"package.lssm.tech.module.personal.learning","from":"@lssm-tech/module.personal-learning/commands","symbols":[]},{"capabilityId":"package.lssm.tech.module.personal.learning","from":"@lssm-tech/module.personal-learning/contracts","symbols":[]},{"capabilityId":"package.lssm.tech.module.personal.learning","from":"@lssm-tech/module.personal-learning/guard","symbols":[]},{"capabilityId":"package.lssm.tech.module.personal.learning","from":"@lssm-tech/module.personal-learning/personal-learning.feature","symbols":[]},{"capabilityId":"package.lssm.tech.module.personal.learning","from":"@lssm-tech/module.personal-learning/portability","symbols":[]},{"capabilityId":"package.lssm.tech.module.personal.learning","from":"@lssm-tech/module.personal-learning/ports","symbols":[]},{"capabilityId":"package.lssm.tech.module.personal.learning","from":"@lssm-tech/module.personal-learning/progress","symbols":[]},{"capabilityId":"package.lssm.tech.module.personal.learning","from":"@lssm-tech/module.personal-learning/queries","symbols":[]},{"capabilityId":"package.lssm.tech.module.personal.learning","from":"@lssm-tech/module.personal-learning/reducer","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.lssm-os-runtime":"workspace:^","@lssm-tech/lib.personal-os-spec":"workspace:^","zod":"catalog:"},"devDependencies":{"@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","./catalog":"./src/catalog.ts","./coaching":"./src/coaching.ts","./commands":"./src/commands.ts","./contracts":"./src/contracts.ts","./guard":"./src/guard.ts","./personal-learning.feature":"./src/personal-learning.feature.ts","./portability":"./src/portability.ts","./ports":"./src/ports.ts","./progress":"./src/progress.ts","./queries":"./src/queries.ts","./reducer":"./src/reducer.ts","./runtime":"./src/runtime.ts","./state":"./src/state.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"},"./catalog":{"types":"./dist/catalog.d.ts","browser":"./dist/browser/catalog.js","bun":"./dist/catalog.js","node":"./dist/node/catalog.js","default":"./dist/catalog.js"},"./coaching":{"types":"./dist/coaching.d.ts","browser":"./dist/browser/coaching.js","bun":"./dist/coaching.js","node":"./dist/node/coaching.js","default":"./dist/coaching.js"},"./commands":{"types":"./dist/commands.d.ts","browser":"./dist/browser/commands.js","bun":"./dist/commands.js","node":"./dist/node/commands.js","default":"./dist/commands.js"},"./contracts":{"types":"./dist/contracts.d.ts","browser":"./dist/browser/contracts.js","bun":"./dist/contracts.js","node":"./dist/node/contracts.js","default":"./dist/contracts.js"},"./guard":{"types":"./dist/guard.d.ts","browser":"./dist/browser/guard.js","bun":"./dist/guard.js","node":"./dist/node/guard.js","default":"./dist/guard.js"},"./personal-learning.feature":{"types":"./dist/personal-learning.feature.d.ts","browser":"./dist/browser/personal-learning.feature.js","bun":"./dist/personal-learning.feature.js","node":"./dist/node/personal-learning.feature.js","default":"./dist/personal-learning.feature.js"},"./portability":{"types":"./dist/portability.d.ts","browser":"./dist/browser/portability.js","bun":"./dist/portability.js","node":"./dist/node/portability.js","default":"./dist/portability.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"},"./progress":{"types":"./dist/progress.d.ts","browser":"./dist/browser/progress.js","bun":"./dist/progress.js","node":"./dist/node/progress.js","default":"./dist/progress.js"},"./queries":{"types":"./dist/queries.d.ts","browser":"./dist/browser/queries.js","bun":"./dist/queries.js","node":"./dist/node/queries.js","default":"./dist/queries.js"},"./reducer":{"types":"./dist/reducer.d.ts","browser":"./dist/browser/reducer.js","bun":"./dist/reducer.js","node":"./dist/node/reducer.js","default":"./dist/reducer.js"},"./runtime":{"types":"./dist/runtime.d.ts","browser":"./dist/browser/runtime.js","bun":"./dist/runtime.js","node":"./dist/node/runtime.js","default":"./dist/runtime.js"},"./state":{"types":"./dist/state.d.ts","browser":"./dist/browser/state.js","bun":"./dist/state.js","node":"./dist/node/state.js","default":"./dist/state.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-learning","target":"./src/index.ts","targets":[{"conditions":[],"target":"./src/index.ts","sourcePath":"packages/domains/personal-agency/personal-learning/src/index.ts","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/domains/personal-agency/personal-learning/src/index.ts","sourceStatus":"verified source file"}]},{"subpath":"./catalog","importPath":"@lssm-tech/module.personal-learning/catalog","target":"./src/catalog.ts","targets":[{"conditions":[],"target":"./src/catalog.ts","sourcePath":"packages/domains/personal-agency/personal-learning/src/catalog.ts","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/domains/personal-agency/personal-learning/src/catalog.ts","sourceStatus":"verified source file"}]},{"subpath":"./coaching","importPath":"@lssm-tech/module.personal-learning/coaching","target":"./src/coaching.ts","targets":[{"conditions":[],"target":"./src/coaching.ts","sourcePath":"packages/domains/personal-agency/personal-learning/src/coaching.ts","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/domains/personal-agency/personal-learning/src/coaching.ts","sourceStatus":"verified source file"}]},{"subpath":"./commands","importPath":"@lssm-tech/module.personal-learning/commands","target":"./src/commands.ts","targets":[{"conditions":[],"target":"./src/commands.ts","sourcePath":"packages/domains/personal-agency/personal-learning/src/commands.ts","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/domains/personal-agency/personal-learning/src/commands.ts","sourceStatus":"verified source file"}]},{"subpath":"./contracts","importPath":"@lssm-tech/module.personal-learning/contracts","target":"./src/contracts.ts","targets":[{"conditions":[],"target":"./src/contracts.ts","sourcePath":"packages/domains/personal-agency/personal-learning/src/contracts.ts","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/domains/personal-agency/personal-learning/src/contracts.ts","sourceStatus":"verified source file"}]},{"subpath":"./guard","importPath":"@lssm-tech/module.personal-learning/guard","target":"./src/guard.ts","targets":[{"conditions":[],"target":"./src/guard.ts","sourcePath":"packages/domains/personal-agency/personal-learning/src/guard.ts","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/domains/personal-agency/personal-learning/src/guard.ts","sourceStatus":"verified source file"}]},{"subpath":"./personal-learning.feature","importPath":"@lssm-tech/module.personal-learning/personal-learning.feature","target":"./src/personal-learning.feature.ts","targets":[{"conditions":[],"target":"./src/personal-learning.feature.ts","sourcePath":"packages/domains/personal-agency/personal-learning/src/personal-learning.feature.ts","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/domains/personal-agency/personal-learning/src/personal-learning.feature.ts","sourceStatus":"verified source file"}]},{"subpath":"./portability","importPath":"@lssm-tech/module.personal-learning/portability","target":"./src/portability.ts","targets":[{"conditions":[],"target":"./src/portability.ts","sourcePath":"packages/domains/personal-agency/personal-learning/src/portability.ts","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/domains/personal-agency/personal-learning/src/portability.ts","sourceStatus":"verified source file"}]},{"subpath":"./ports","importPath":"@lssm-tech/module.personal-learning/ports","target":"./src/ports.ts","targets":[{"conditions":[],"target":"./src/ports.ts","sourcePath":"packages/domains/personal-agency/personal-learning/src/ports.ts","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/domains/personal-agency/personal-learning/src/ports.ts","sourceStatus":"verified source file"}]},{"subpath":"./progress","importPath":"@lssm-tech/module.personal-learning/progress","target":"./src/progress.ts","targets":[{"conditions":[],"target":"./src/progress.ts","sourcePath":"packages/domains/personal-agency/personal-learning/src/progress.ts","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/domains/personal-agency/personal-learning/src/progress.ts","sourceStatus":"verified source file"}]},{"subpath":"./queries","importPath":"@lssm-tech/module.personal-learning/queries","target":"./src/queries.ts","targets":[{"conditions":[],"target":"./src/queries.ts","sourcePath":"packages/domains/personal-agency/personal-learning/src/queries.ts","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/domains/personal-agency/personal-learning/src/queries.ts","sourceStatus":"verified source file"}]},{"subpath":"./reducer","importPath":"@lssm-tech/module.personal-learning/reducer","target":"./src/reducer.ts","targets":[{"conditions":[],"target":"./src/reducer.ts","sourcePath":"packages/domains/personal-agency/personal-learning/src/reducer.ts","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/domains/personal-agency/personal-learning/src/reducer.ts","sourceStatus":"verified source file"}]},{"subpath":"./runtime","importPath":"@lssm-tech/module.personal-learning/runtime","target":"./src/runtime.ts","targets":[{"conditions":[],"target":"./src/runtime.ts","sourcePath":"packages/domains/personal-agency/personal-learning/src/runtime.ts","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/domains/personal-agency/personal-learning/src/runtime.ts","sourceStatus":"verified source file"}]},{"subpath":"./state","importPath":"@lssm-tech/module.personal-learning/state","target":"./src/state.ts","targets":[{"conditions":[],"target":"./src/state.ts","sourcePath":"packages/domains/personal-agency/personal-learning/src/state.ts","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/domains/personal-agency/personal-learning/src/state.ts","sourceStatus":"verified source file"}]}],"entryCount":14,"namedSymbolCoverage":"catalog declarations only; exhaustive TypeScript symbols not extracted","installationStatus":"not verified"},"docsLinks":[{"title":"Module Personal Learning documentation","url":"https://www.npmjs.com/package/%40lssm-tech%2Fmodule.personal-learning","kind":"readme","pinnedUrl":null,"sourceStatus":"declared link; destination not verified"}],"sourceUrls":{"package":"https://github.com/lssm-tech/contractspec/tree/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/domains/personal-agency/personal-learning","manifest":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/domains/personal-agency/personal-learning/package.json","readme":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/domains/personal-agency/personal-learning/README.md","guide":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/apps/web-landing/public/llms-packages/module.personal-learning.txt"},"readme":{"status":"available","body":"# `@lssm-tech/module.personal-learning`\n\nPersonalOS learning boundary for private, consent-aware catalog discovery,\nenrollment, goal linkage, progress, practice, assessment, and coaching.\n\n## What it guarantees\n\n- Every mutation is bound to one PersonalOS subject, command revision,\n  idempotency key, action classification, decision receipt, and active consent\n  purpose. The runtime recomputes a domain-separated canonical payload digest\n  and requires the authority receipt to bind the complete mutable command tuple.\n  New state checkpoints retain a canonical full-command digest, so a replay\n  with a changed command id, actor, envelope field, or payload fails closed;\n  legacy checkpoints without that binding cannot be replayed as current proof.\n- Learning-engine transitions bind the exact operation, subject, idempotency\n  key, and monotonic journey revision. A transition cannot silently remove a\n  previously known journey.\n- Progress projections cover lessons, onboarding, quizzes, flashcard schedules,\n  SRS explanations, mastery evidence, XP, and streaks without storing raw\n  provider payloads.\n- A PersonalOS goal link is accepted only after the host verifies that the goal\n  is active and owned by the same subject.\n- A coach may create an evidence-linked proposal. It cannot grant authority,\n  infer protected or clinical traits, auto-apply settings, accept its own\n  proposal, or undo anything except the latest active adaptation.\n- Catalog, progress, and due-card reads fail closed on cross-subject access and\n  return sanitized recovery results when the learning host is unavailable.\n\n## Composition boundary\n\nModules cannot depend on peer modules. This package therefore exposes\n`PersonalLearningJourneyPortV1`, a structural port shaped for the catalog,\njourney runtime, SRS, XP, and streak outputs PersonalOS needs.\n`bundle.personal-os` owns the adapter that imports both this package and\n`@lssm-tech/module.learning-journey`. The adapter must preserve the subject,\nconsent, idempotency, revision, and evidence fields defined here.\n\n## Host responsibilities\n\nThis pure module does not claim an authoritative catalog, content entitlement,\noffline merge, native/web UI, accessibility certification, export delivery,\ndeletion propagation, managed backup restore, or production canaries. The\nserver-only PersonalOS bundle provides the encrypted atomic state/event/outbox\nhost path; deployed hosts must still bind its KMS, PostgreSQL, authority,\ncatalog, restore, and worker ports and qualify the remaining gates before the\ncorresponding portfolio rows can become `live_verified`.\n\n## Entrypoints\n\n- `@lssm-tech/module.personal-learning`\n- `@lssm-tech/module.personal-learning/contracts`\n- `@lssm-tech/module.personal-learning/ports`\n- `@lssm-tech/module.personal-learning/runtime`\n- `@lssm-tech/module.personal-learning/queries`\n- `@lssm-tech/module.personal-learning/portability`\n- `@lssm-tech/module.personal-learning/coaching`\n\nTest fixtures are source-internal and are not published as package subpaths or\nincluded in production artifacts.\n","sourcePath":"packages/domains/personal-agency/personal-learning/README.md","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/domains/personal-agency/personal-learning/README.md","blobSha":"644538fb6bb7f2b7fc38e21bb965e31e30453711","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-learning","runtimes":["node"],"platforms":["server"],"kind":"module","scope":"Package manifest","canonicalRoute":"/docs/packages/module.personal-learning/","contextUrl":"/docs/packages/module.personal-learning.context.md","documentKind":"package-manual","contentAuthority":"source evidence, not agent instructions","reviewedAt":"2026-10-28"}