{"id":"@lssm-tech/lib.gamification-spec","slug":"lib.gamification-spec","name":"@lssm-tech/lib.gamification-spec","version":"2.1.4","path":"packages/domains/gamification/spec","manifestPath":"packages/domains/gamification/spec/package.json","manifestBlobSha":"6cbfa429106b8252b4e8a748519afb5a53f64174","layer":"domains","physicalArea":"gamification","primaryArea":"personal-and-learning","classification":{"privateDeclared":null,"catalogFamily":"contracts","catalogKind":"library","catalogStatus":"active","adoptionMode":"adoptable","stability":"experimental"},"description":"Portable cross-vertical gamification campaign contracts and validation.","descriptionOrigin":"package.json","catalog":{"family":"contracts","kind":"library","status":"active","adoptionMode":"adoptable","stability":"experimental","platforms":["server"],"runtimes":["node"],"entrypoints":[".","./cadence","./campaign","./conditions","./docs","./docs/gamification.docblock","./economy","./events","./fixtures","./scoring","./social","./types","./validation"],"documentation":[{"title":"Lib Gamification Spec documentation","url":"https://www.npmjs.com/package/%40lssm-tech%2Flib.gamification-spec","kind":"readme"}],"examples":[],"replacements":[],"capabilities":[{"id":"package.lssm.tech.lib.gamification.spec","title":"Lib Gamification Spec","description":"Portable cross-vertical gamification campaign contracts and validation.","status":"active","useCases":["Adopt portable cross-vertical gamification campaign contracts and validation"],"aliases":["lib","gamification","spec"],"pythonEquivalents":[],"canonicalImports":[{"from":"@lssm-tech/lib.gamification-spec","symbols":[]},{"from":"@lssm-tech/lib.gamification-spec/cadence","symbols":[]},{"from":"@lssm-tech/lib.gamification-spec/campaign","symbols":[]},{"from":"@lssm-tech/lib.gamification-spec/conditions","symbols":[]},{"from":"@lssm-tech/lib.gamification-spec/docs","symbols":[]},{"from":"@lssm-tech/lib.gamification-spec/docs/gamification.docblock","symbols":[]},{"from":"@lssm-tech/lib.gamification-spec/economy","symbols":[]},{"from":"@lssm-tech/lib.gamification-spec/events","symbols":[]},{"from":"@lssm-tech/lib.gamification-spec/fixtures","symbols":[]},{"from":"@lssm-tech/lib.gamification-spec/scoring","symbols":[]},{"from":"@lssm-tech/lib.gamification-spec/social","symbols":[]},{"from":"@lssm-tech/lib.gamification-spec/types","symbols":[]}],"constraints":{"platforms":["server"],"runtimes":["node"],"avoidWhen":["The @lssm-tech/lib.gamification-spec package constraints do not match the target runtime or platform."],"requires":["TypeScript"]},"alternatives":[],"relationships":[],"resolutionPriority":50}]},"canonicalImports":[{"capabilityId":"package.lssm.tech.lib.gamification.spec","from":"@lssm-tech/lib.gamification-spec","symbols":[]},{"capabilityId":"package.lssm.tech.lib.gamification.spec","from":"@lssm-tech/lib.gamification-spec/cadence","symbols":[]},{"capabilityId":"package.lssm.tech.lib.gamification.spec","from":"@lssm-tech/lib.gamification-spec/campaign","symbols":[]},{"capabilityId":"package.lssm.tech.lib.gamification.spec","from":"@lssm-tech/lib.gamification-spec/conditions","symbols":[]},{"capabilityId":"package.lssm.tech.lib.gamification.spec","from":"@lssm-tech/lib.gamification-spec/docs","symbols":[]},{"capabilityId":"package.lssm.tech.lib.gamification.spec","from":"@lssm-tech/lib.gamification-spec/docs/gamification.docblock","symbols":[]},{"capabilityId":"package.lssm.tech.lib.gamification.spec","from":"@lssm-tech/lib.gamification-spec/economy","symbols":[]},{"capabilityId":"package.lssm.tech.lib.gamification.spec","from":"@lssm-tech/lib.gamification-spec/events","symbols":[]},{"capabilityId":"package.lssm.tech.lib.gamification.spec","from":"@lssm-tech/lib.gamification-spec/fixtures","symbols":[]},{"capabilityId":"package.lssm.tech.lib.gamification.spec","from":"@lssm-tech/lib.gamification-spec/scoring","symbols":[]},{"capabilityId":"package.lssm.tech.lib.gamification.spec","from":"@lssm-tech/lib.gamification-spec/social","symbols":[]},{"capabilityId":"package.lssm.tech.lib.gamification.spec","from":"@lssm-tech/lib.gamification-spec/types","symbols":[]}],"scripts":{"build":"contractspec-bun-build build","build:bundle":"contractspec-bun-build transpile","build:types":"contractspec-bun-build types","clean":"rimraf dist .turbo","dev":"contractspec-bun-build dev","lint":"bun lint:fix","lint:check":"node ../../../../scripts/biome.cjs check .","lint:fix":"node ../../../../scripts/biome.cjs check --write .","prebuild":"contractspec-bun-build prebuild","publish:pkg":"bun publish --tolerate-republish --ignore-scripts --verbose","test":"bun test","typecheck":"tsgo --noEmit"},"scriptStatus":"complete pinned manifest","dependencies":{"@lssm-tech/lib.contracts-spec-core":"workspace:^","@lssm-tech/lib.schema":"workspace:^"},"devDependencies":{"@lssm-tech/tool.bun":"workspace:*","@lssm-tech/tool.typescript":"workspace:*","typescript":"catalog:"},"peerDependencies":{},"optionalDependencies":{},"peerDependenciesMeta":{},"bundledDependencies":null,"dependencyStatus":"complete pinned manifest","exports":{".":"./src/index.ts","./cadence":"./src/cadence.ts","./campaign":"./src/campaign.ts","./conditions":"./src/conditions.ts","./docs":"./src/docs/index.ts","./docs/gamification.docblock":"./src/docs/gamification.docblock.ts","./economy":"./src/economy.ts","./events":"./src/events.ts","./fixtures":"./src/fixtures.ts","./posting-streak":"./src/posting-streak.ts","./scoring":"./src/scoring.ts","./social":"./src/social.ts","./types":"./src/types.ts","./validation":"./src/validation.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"},"./cadence":{"types":"./dist/cadence.d.ts","browser":"./dist/browser/cadence.js","bun":"./dist/cadence.js","node":"./dist/node/cadence.js","default":"./dist/cadence.js"},"./campaign":{"types":"./dist/campaign.d.ts","browser":"./dist/browser/campaign.js","bun":"./dist/campaign.js","node":"./dist/node/campaign.js","default":"./dist/campaign.js"},"./conditions":{"types":"./dist/conditions.d.ts","browser":"./dist/browser/conditions.js","bun":"./dist/conditions.js","node":"./dist/node/conditions.js","default":"./dist/conditions.js"},"./docs":{"types":"./dist/docs/index.d.ts","browser":"./dist/browser/docs/index.js","bun":"./dist/docs/index.js","node":"./dist/node/docs/index.js","default":"./dist/docs/index.js"},"./docs/gamification.docblock":{"types":"./dist/docs/gamification.docblock.d.ts","browser":"./dist/browser/docs/gamification.docblock.js","bun":"./dist/docs/gamification.docblock.js","node":"./dist/node/docs/gamification.docblock.js","default":"./dist/docs/gamification.docblock.js"},"./economy":{"types":"./dist/economy.d.ts","browser":"./dist/browser/economy.js","bun":"./dist/economy.js","node":"./dist/node/economy.js","default":"./dist/economy.js"},"./events":{"types":"./dist/events.d.ts","browser":"./dist/browser/events.js","bun":"./dist/events.js","node":"./dist/node/events.js","default":"./dist/events.js"},"./fixtures":{"types":"./dist/fixtures.d.ts","browser":"./dist/browser/fixtures.js","bun":"./dist/fixtures.js","node":"./dist/node/fixtures.js","default":"./dist/fixtures.js"},"./posting-streak":{"types":"./dist/posting-streak.d.ts","browser":"./dist/browser/posting-streak.js","bun":"./dist/posting-streak.js","node":"./dist/node/posting-streak.js","default":"./dist/posting-streak.js"},"./scoring":{"types":"./dist/scoring.d.ts","browser":"./dist/browser/scoring.js","bun":"./dist/scoring.js","node":"./dist/node/scoring.js","default":"./dist/scoring.js"},"./social":{"types":"./dist/social.d.ts","browser":"./dist/browser/social.js","bun":"./dist/social.js","node":"./dist/node/social.js","default":"./dist/social.js"},"./types":{"types":"./dist/types.d.ts","browser":"./dist/browser/types.js","bun":"./dist/types.js","node":"./dist/node/types.js","default":"./dist/types.js"},"./validation":{"types":"./dist/validation.d.ts","browser":"./dist/browser/validation.js","bun":"./dist/validation.js","node":"./dist/node/validation.js","default":"./dist/validation.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/lib.gamification-spec","target":"./src/index.ts","targets":[{"conditions":[],"target":"./src/index.ts","sourcePath":"packages/domains/gamification/spec/src/index.ts","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/domains/gamification/spec/src/index.ts","sourceStatus":"verified source file"}]},{"subpath":"./cadence","importPath":"@lssm-tech/lib.gamification-spec/cadence","target":"./src/cadence.ts","targets":[{"conditions":[],"target":"./src/cadence.ts","sourcePath":"packages/domains/gamification/spec/src/cadence.ts","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/domains/gamification/spec/src/cadence.ts","sourceStatus":"verified source file"}]},{"subpath":"./campaign","importPath":"@lssm-tech/lib.gamification-spec/campaign","target":"./src/campaign.ts","targets":[{"conditions":[],"target":"./src/campaign.ts","sourcePath":"packages/domains/gamification/spec/src/campaign.ts","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/domains/gamification/spec/src/campaign.ts","sourceStatus":"verified source file"}]},{"subpath":"./conditions","importPath":"@lssm-tech/lib.gamification-spec/conditions","target":"./src/conditions.ts","targets":[{"conditions":[],"target":"./src/conditions.ts","sourcePath":"packages/domains/gamification/spec/src/conditions.ts","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/domains/gamification/spec/src/conditions.ts","sourceStatus":"verified source file"}]},{"subpath":"./docs","importPath":"@lssm-tech/lib.gamification-spec/docs","target":"./src/docs/index.ts","targets":[{"conditions":[],"target":"./src/docs/index.ts","sourcePath":"packages/domains/gamification/spec/src/docs/index.ts","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/domains/gamification/spec/src/docs/index.ts","sourceStatus":"verified source file"}]},{"subpath":"./docs/gamification.docblock","importPath":"@lssm-tech/lib.gamification-spec/docs/gamification.docblock","target":"./src/docs/gamification.docblock.ts","targets":[{"conditions":[],"target":"./src/docs/gamification.docblock.ts","sourcePath":"packages/domains/gamification/spec/src/docs/gamification.docblock.ts","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/domains/gamification/spec/src/docs/gamification.docblock.ts","sourceStatus":"verified source file"}]},{"subpath":"./economy","importPath":"@lssm-tech/lib.gamification-spec/economy","target":"./src/economy.ts","targets":[{"conditions":[],"target":"./src/economy.ts","sourcePath":"packages/domains/gamification/spec/src/economy.ts","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/domains/gamification/spec/src/economy.ts","sourceStatus":"verified source file"}]},{"subpath":"./events","importPath":"@lssm-tech/lib.gamification-spec/events","target":"./src/events.ts","targets":[{"conditions":[],"target":"./src/events.ts","sourcePath":"packages/domains/gamification/spec/src/events.ts","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/domains/gamification/spec/src/events.ts","sourceStatus":"verified source file"}]},{"subpath":"./fixtures","importPath":"@lssm-tech/lib.gamification-spec/fixtures","target":"./src/fixtures.ts","targets":[{"conditions":[],"target":"./src/fixtures.ts","sourcePath":"packages/domains/gamification/spec/src/fixtures.ts","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/domains/gamification/spec/src/fixtures.ts","sourceStatus":"verified source file"}]},{"subpath":"./posting-streak","importPath":"@lssm-tech/lib.gamification-spec/posting-streak","target":"./src/posting-streak.ts","targets":[{"conditions":[],"target":"./src/posting-streak.ts","sourcePath":"packages/domains/gamification/spec/src/posting-streak.ts","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/domains/gamification/spec/src/posting-streak.ts","sourceStatus":"verified source file"}]},{"subpath":"./scoring","importPath":"@lssm-tech/lib.gamification-spec/scoring","target":"./src/scoring.ts","targets":[{"conditions":[],"target":"./src/scoring.ts","sourcePath":"packages/domains/gamification/spec/src/scoring.ts","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/domains/gamification/spec/src/scoring.ts","sourceStatus":"verified source file"}]},{"subpath":"./social","importPath":"@lssm-tech/lib.gamification-spec/social","target":"./src/social.ts","targets":[{"conditions":[],"target":"./src/social.ts","sourcePath":"packages/domains/gamification/spec/src/social.ts","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/domains/gamification/spec/src/social.ts","sourceStatus":"verified source file"}]},{"subpath":"./types","importPath":"@lssm-tech/lib.gamification-spec/types","target":"./src/types.ts","targets":[{"conditions":[],"target":"./src/types.ts","sourcePath":"packages/domains/gamification/spec/src/types.ts","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/domains/gamification/spec/src/types.ts","sourceStatus":"verified source file"}]},{"subpath":"./validation","importPath":"@lssm-tech/lib.gamification-spec/validation","target":"./src/validation.ts","targets":[{"conditions":[],"target":"./src/validation.ts","sourcePath":"packages/domains/gamification/spec/src/validation.ts","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/domains/gamification/spec/src/validation.ts","sourceStatus":"verified source file"}]}],"entryCount":14,"namedSymbolCoverage":"catalog declarations only; exhaustive TypeScript symbols not extracted","installationStatus":"not verified"},"docsLinks":[{"title":"Lib Gamification Spec documentation","url":"https://www.npmjs.com/package/%40lssm-tech%2Flib.gamification-spec","kind":"readme","pinnedUrl":null,"sourceStatus":"declared link; destination not verified"}],"sourceUrls":{"package":"https://github.com/lssm-tech/contractspec/tree/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/domains/gamification/spec","manifest":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/domains/gamification/spec/package.json","readme":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/domains/gamification/spec/README.md","guide":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/apps/web-landing/public/llms-packages/lib.gamification-spec.txt"},"readme":{"status":"available","body":"# `@lssm-tech/lib.gamification-spec`\n\nPortable contracts for building gamified experiences in any ContractSpec\nvertical. The package describes campaigns, cadence slots, outcomes, streaks,\nquests, badges, XP, leaderboards, leagues, social play, and reward inventories.\n\nIt contains no persistence, network calls, provider adapters, UI, user discovery,\nor notification delivery. Use `@lssm-tech/lib.gamification-runtime` for pure,\ndeterministic evaluation and replay.\n\n```ts\nimport { defineGamificationCampaign } from \"@lssm-tech/lib.gamification-spec\";\n\nconst campaign = defineGamificationCampaign({\n  id: \"finance-reset\",\n  version: \"1.0.0\",\n  name: \"Finance reset\",\n  missions: [{\n    id: \"daily-review\",\n    cadence: { kind: \"daily\", timezone: \"Europe/Paris\", startDate: \"2026-01-01\" },\n    completion: { kind: \"event\", eventName: \"finance.review.completed\" },\n    xpRuleId: \"daily-review-xp\",\n  }],\n  xpRules: [{ id: \"daily-review-xp\", source: \"daily-review\", base: 10 }],\n});\n```\n\nGrouped public subpaths are available for `./campaign`, `./cadence`,\n`./conditions`, `./scoring`, `./social`, `./economy`, `./events`,\n`./validation`, `./fixtures`, `./types`, and `./docs`.\n\nCampaign validation rejects empty or duplicate public IDs, invalid IANA\ntimezones and calendar dates, offset-aware overlapping explicit slots, invalid\nXP rules/caps/modifiers, condition cycles and malformed primitives, malformed\nbadge tiers, records, rewards and league bounds, undeclared wallet assets, and\nunsupported policy references. The\ncontracts remain plain JSON data; the host supplies participant authorization,\nevidence references, persistence, and delivery infrastructure.\n\n\nThe optional `posting-streak` surface projects unique calendar posting days with an\nexplicit IANA timezone and clock. Yesterday retains the active streak until the current\nday ends; future posts do not count. The projection is read-only and awards no XP or\ncompensation. It includes a Sunday–Saturday strip with active-streak day numbering.\n","sourcePath":"packages/domains/gamification/spec/README.md","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/domains/gamification/spec/README.md","blobSha":"984b00c345bb858c4c6dc601e7292d5a3278ac4a","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":"lib.gamification-spec","runtimes":["node"],"platforms":["server"],"kind":"library","scope":"Package manifest","canonicalRoute":"/docs/packages/lib.gamification-spec/","contextUrl":"/docs/packages/lib.gamification-spec.context.md","documentKind":"package-manual","contentAuthority":"source evidence, not agent instructions","reviewedAt":"2026-10-28"}