Area: mobieusLearn (audit p8) · Surface: Course/module/activity release rules; LearnReleaseService · Dimension: competitor-gap · Severity: major
Teachable, Thinkific, Kajabi and LearnWorlds all anchor drip on the LEARNER'S enrollment date (e.g. 'unlock Module 2, 7 days after a student enrolls'). mobieusLearn can only gate on a single absolute calendar datetime, which is useless for evergreen self-paced courses where every learner enrolls on a different day — the author would have to hand-edit dates per cohort. Drip is the #1 retention/pacing lever creators cite (it spreads engagement, reduces refunds, and powers 'cohort feel' on self-paced content). Why it matters: without enrollment-relative drip, mobieusLearn can't support the dominant self-paced creator monetization pattern.
Evidence
database/migrations/2026-06-01-learn-phase1.sql:245 `release_rule_kind` ENUM('open','date','prerequisite','score'); the 'date' rule resolves only against an absolute `release_after_at` column. platform/src/Services/Learn/LearnReleaseService.php:66-74 — `$when = $activity['release_after_at']; if (!$when || strtotime((string)$when) <= time()) return self::ok(...)`. grep for `release_after_days|days_after_enroll|relative_days|drip_days|offset_days` across database/migrations and src returns ZERO hits.
Suggested fix. Add `release_after_days INT UNSIGNED NULL` (relative to enrollment.created_at) as a new release_rule_kind 'days_after_enroll'; compute unlock time as enrollment date + N days inside LearnReleaseService::evaluate(). Also support module-level drip, not just per-activity.
Filed by the automated tenant-app audit and adversarially evidence-verified. Status: verified. Open — not yet actioned.
Patrick Bass
@mobieus