{"id":"@lssm-tech/module.editorial","slug":"module.editorial","name":"@lssm-tech/module.editorial","version":"0.2.4","path":"packages/domains/content/editorial","manifestPath":"packages/domains/content/editorial/package.json","manifestBlobSha":"48cadc627945214831afe905bce1e6ed71967ab1","layer":"domains","physicalArea":"content","primaryArea":"content-and-growth","classification":{"privateDeclared":null,"catalogFamily":"solutions","catalogKind":"module","catalogStatus":"active","adoptionMode":"adoptable","stability":"experimental"},"description":"Versioned editorial review and publication workflows.","descriptionOrigin":"package.json","catalog":{"family":"solutions","kind":"module","status":"active","adoptionMode":"adoptable","stability":"experimental","platforms":["server"],"runtimes":["bun","node"],"entrypoints":["."],"documentation":[{"title":"Editorial module","url":"https://github.com/lssm-tech/contractspec/tree/main/packages/domains/content/editorial","kind":"readme"}],"capabilities":[{"id":"package.lssm.tech.module.editorial","title":"Editorial module","description":"Reusable editorial workflow module.","useCases":["Compose editorial workflows"],"aliases":["editorial","module"],"canonicalImports":[{"from":"@lssm-tech/module.editorial","symbols":[]}],"constraints":{"platforms":["server"],"runtimes":["bun","node"],"avoidWhen":["The target does not need editorial workflows."],"requires":["TypeScript"]}}]},"canonicalImports":[{"capabilityId":"package.lssm.tech.module.editorial","from":"@lssm-tech/module.editorial","symbols":[]}],"scripts":{"build":"contractspec-bun-build build","build:bundle":"contractspec-bun-build transpile","build:types":"contractspec-bun-build types","lint:check":"node ../../../../scripts/biome.cjs check .","prebuild":"contractspec-bun-build prebuild","typecheck":"tsgo --noEmit","publish:pkg":"bun publish --tolerate-republish --ignore-scripts --verbose"},"scriptStatus":"complete pinned manifest","dependencies":{"@lssm-tech/lib.contracts-runtime-core":"workspace:^","@lssm-tech/lib.contracts-spec-core":"workspace:^","@lssm-tech/lib.growth-spec":"workspace:^","@lssm-tech/lib.growth-runtime":"workspace:^"},"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"},"publishExports":{".":{"types":"./dist/index.d.ts","browser":"./dist/browser/index.js","bun":"./dist/index.js","node":"./dist/node/index.js","default":"./dist/index.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.editorial","target":"./src/index.ts","targets":[{"conditions":[],"target":"./src/index.ts","sourcePath":"packages/domains/content/editorial/src/index.ts","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/domains/content/editorial/src/index.ts","sourceStatus":"verified source file"}]}],"entryCount":1,"namedSymbolCoverage":"catalog declarations only; exhaustive TypeScript symbols not extracted","installationStatus":"not verified"},"docsLinks":[{"title":"Editorial module","url":"https://github.com/lssm-tech/contractspec/tree/main/packages/domains/content/editorial","kind":"readme","pinnedUrl":"https://github.com/lssm-tech/contractspec/tree/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/domains/content/editorial","sourceStatus":"verified pinned repository path"}],"sourceUrls":{"package":"https://github.com/lssm-tech/contractspec/tree/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/domains/content/editorial","manifest":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/domains/content/editorial/package.json","readme":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/domains/content/editorial/README.md","guide":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/apps/web-landing/public/llms-packages/module.editorial.txt"},"readme":{"status":"available","body":"# Editorial module\n\nBind ten standard editorial operations (plus optional listing, recovery discovery and reviewed preparation resume) into an existing ContractSpec registry with\n`registerEditorialOperations`. The module composes only library contracts and\nruntimes; publishers and storage are supplied by the host bundle.\n\nCreate → revise → submit → review → schedule → publish. Every accepted revision\nhas immutable history. Edits invalidate review and scheduling. Publication claims\nthe record with CAS before calling an injected CMS or social publisher; unknown\noutcomes are reconciled without re-dispatch. Published items require a separate\nwithdrawal workflow before removal.\n\nThe authority port verifies current actor rights, review evidence, brand claims,\nasset rights and destination access. The host supplies `HandlerCtx` authentication\nand scoped approval receipts for publication. No default permitting authority or\npublication provider is supplied. The SQL store lives in growth-persistence/marketing.\n\n\n`/marketing/editorial/due` lists bounded scheduled work due at the server clock. Discovery\nand individual records require read authorization; invalid scope/schedule output is\nrejected. It does not invoke publication or imply publication approval.\n\n\nThe optional `/marketing/editorial/recovery` REST/MCP operation is registered only when the injected store implements `listRecovery`. It discovers unsettled claims for the existing reconcile operation; minimum age defaults to 60 seconds.\n\n\nThe optional `/marketing/editorial/resume-preparation` command is registered only for publishers advertising preparation recovery. Fresh exact-input approval is mandatory; it does not change ordinary reconciliation into a write-capable action.\n\n\n`/marketing/editorial/list` and `editorial_list` are available when the store implements listPage. Discovery is read-only and supports agent/workspace browsing without a known record ID.\n\n\nThe revise handler maps a runtime revision conflict to the canonical REVISION_CONFLICT response (409), including conflicts at the compare-and-swap write.\n\n\nSubmission revision conflicts now use canonical HTTP 409 responses, matching revision-save conflict behavior.\n\n\nReview decision revision conflicts are mapped to canonical HTTP 409 without weakening reviewer/current-authority checks.\n\n\nScheduling revision conflicts return canonical HTTP 409 responses.\n\n\nExisting editorial creation IDs now return canonical ALREADY_EXISTS / HTTP 409 without changing the stored record.\n\n\nArchival revision conflicts use canonical HTTP 409. Provider withdrawal remains a separate workflow for published or uncertain content.\n\n\nHistory REST/MCP registration is conditional on store.listHistory. Missing support remains unavailable.\n","sourcePath":"packages/domains/content/editorial/README.md","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/domains/content/editorial/README.md","blobSha":"b297881228d8e755571da09b1b978f84dd206446","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":"content-and-growth","areaTitle":"Content, growth and creator operations","displayName":"module.editorial","runtimes":["bun","node"],"platforms":["server"],"kind":"module","scope":"Package manifest","canonicalRoute":"/docs/packages/module.editorial/","contextUrl":"/docs/packages/module.editorial.context.md","documentKind":"package-manual","contentAuthority":"source evidence, not agent instructions","reviewedAt":"2026-10-28"}