Installable Social Media Feature Hub for Instagram, LinkedIn, TikTok, X, and YouTube. It intentionally does not widen the legacy four-provider
SocialPlatform union.
The runtime defaults to draft-only. Publication requires injected atomic intent, provider, grant-verification, content-digest, policy, and audit ports. It creates one durable local intent per platform/revision, never blindly retries an ambiguous provider response, and reports partial results per platform.
Intent reads, compare-and-set transitions, recovery claims, and recovery scans are tenant-bound. Reconciliation derives platform/account authority from the stored intent and rejects caller substitution. A crash that leaves a pending
intent is failed closed without provider dispatch; ambiguous dispatches are reconciled under a tenant-scoped fenced lease.
Use the root or ./hub export for turnkey installation, or the ./manifest, ./ports,
./runtime, ./view-model, and ./ui subpaths for granular composition.
./runtime now exports SocialSchedulingRuntime, its operation registrar and lifecycle worker registration. LinkedIn/X schedules preserve immutable revision/digest, explicit UTC publication/deadline instants, display timezone, grant reference and account targets. Cancellation is limited to unclaimed schedules. Due workers use CAS claims and call the existing publisher; unknown outcomes retain canonical intents for read reconciliation. Stale workers resume only with current authority and the same publication keys.
A content revision/account has one canonical publication. Reusing it replays the existing receipt; a deliberate repost needs a new reviewed content revision. Scheduling does not silently change this existing idempotency contract.
registerSocialScheduleWorker reuses the injected lifecycle scheduler. Batches first recover stale schedules and then process due work within the requested limit; the host must persist batch results. Use the existing Hub publication recovery for orphaned pending intents. No provider SDKs, credentials or permitting authority are installed by default.
Use optional providersV2 (Hub port social-media.providers-v2) for tenant-bound native adapters. The required legacy providers map can be empty. V2 takes precedence for its configured platform and always receives tenant/account identity plus the canonical local key. There is no fallback after an ambiguous V2 result. Resolve or explicitly bridge old ambiguous receipts before changing provider implementations. Legacy typing/defaults stay unchanged.
V2 adapters may implement resume for durable multi-part content. The scheduler calls it only through a freshly authorized canonical continuation claim. Active recovery leases prevent the claim; legacy providers retain replay behavior. V2 publish/resume requests include the named publishing grant so adapters can stop later parts after revocation. Reconciliation remains read-only at the native provider boundary.