Grace Periods
Grace Periods
Section titled “Grace Periods”When a creator boxes their identity, existing avatars using their likeness aren’t immediately removed. Instead, a 30-day grace period gives avatar creators time to comply.
Why Grace Periods Exist
Section titled “Why Grace Periods Exist”LMIF prioritizes fair treatment for everyone:
- For creators: Protection is enforced, but fairly
- For avatar creators: Time to adapt, not abrupt cutoffs
- For users: Conversations preserved, smooth transitions
- For platforms: Predictable compliance windows
30-Day Timeline
Section titled “30-Day Timeline”┌─────────────────────────────────────────────────────────────┐│ GRACE PERIOD TIMELINE │├─────────────────────────────────────────────────────────────┤│ ││ DAY 0: Box Activated ││ ├── All matching avatars flagged ││ ├── Avatar creators notified ││ ├── Users notified (in-app message) ││ └── Grace period countdown begins ││ ││ DAY 7: First Reminder ││ └── Notification sent to avatar creators ││ ││ DAY 21: Second Reminder ││ └── "9 days remaining" notification ││ ││ DAY 28: Final Warning ││ └── "2 days remaining - take action now" ││ ││ DAY 30: Enforcement ││ ├── Unlicensed avatars deactivated ││ ├── Users migrated to alternatives ││ └── Conversation history preserved ││ │└─────────────────────────────────────────────────────────────┘Resolution Options
Section titled “Resolution Options”During the grace period, avatar creators have several options:
| Option | Description |
|---|---|
| Obtain License | Apply for and pay for a license |
| Remove Avatar | Delete the violating avatar |
| Mark as Parody | Add clear parody disclaimer (if allowed by policy) |
| Modify Avatar | Change name/image to remove likeness |
| Appeal | Dispute the detection (goes to human review) |
For Platform Developers
Section titled “For Platform Developers”Handling Grace Period Webhooks
Section titled “Handling Grace Period Webhooks”app.post('/webhooks/lmif', async (req, res) => { const event = req.body;
switch (event.type) { case 'grace_period.started': // A grace period has begun for your platform await handleGracePeriodStart(event.data); break;
case 'grace_period.reminder': // Reminder notification (day 7, 21, 28) await sendReminder(event.data); break;
case 'grace_period.ending': // Final warning - 2 days left await sendUrgentNotification(event.data); break;
case 'grace_period.expired': // Grace period ended - enforcement required await enforceViolation(event.data); break;
case 'grace_period.resolved': // Avatar creator resolved the violation await markResolved(event.data); break; }
res.status(200).send('OK');});Grace Period API
Section titled “Grace Period API”// Get active grace periods for your platformconst gracePeriods = await lmif.gracePeriods.list({ platformId: 'your_platform_id', status: 'active'});
// Get details of a specific grace periodconst period = await lmif.gracePeriods.get('gp_abc123');
// Mark a violation as resolvedawait lmif.gracePeriods.resolve('gp_abc123', { resolution: 'removed', avatarId: 'avatar_xyz'});Response Format
Section titled “Response Format”{ "id": "gp_abc123", "boxId": "box_xyz789", "violationId": "viol_123456", "status": "active", "startedAt": "2024-01-01T00:00:00Z", "expiresAt": "2024-01-31T00:00:00Z", "daysRemaining": 15, "affectedAvatars": [ { "avatarId": "avatar_001", "platformId": "your_platform", "creatorId": "creator_abc", "userCount": 1500 } ], "notifications": { "day0": { "sent": true, "at": "2024-01-01T00:00:00Z" }, "day7": { "sent": true, "at": "2024-01-08T00:00:00Z" }, "day21": { "sent": false }, "day28": { "sent": false } }}User Experience Principles
Section titled “User Experience Principles”- Never abrupt - Users always get warning
- Always alternatives - Suggest similar avatars
- Preserve history - Conversations and memories saved
- Smooth migration - Clear path to new avatars
Special Cases
Section titled “Special Cases”Early Resolution
Section titled “Early Resolution”If an avatar creator resolves the violation early (e.g., obtains a license), the grace period ends immediately:
// Avatar creator obtained a licenseawait lmif.gracePeriods.resolve('gp_abc123', { resolution: 'licensed', licenseId: 'lic_xyz789'});Appeals
Section titled “Appeals”If an avatar creator appeals, the grace period is paused:
{ "id": "gp_abc123", "status": "paused", "pauseReason": "appeal_pending", "appealId": "appeal_456", "originalExpiresAt": "2024-01-31T00:00:00Z"}The grace period resumes (with remaining time) if the appeal is denied.
Creator Changes Policy
Section titled “Creator Changes Policy”If the identity owner changes to a less restrictive policy during the grace period:
| Policy Change | Effect |
|---|---|
| BLOCK_ALL → MONETIZE | Grace period continues, but with licensing option |
| BLOCK_ALL → OPEN | Grace period ends, no enforcement |
| MONETIZE → BLOCK_ALL | Grace period resets to 30 days |
Sandbox Testing
Section titled “Sandbox Testing”In the sandbox environment, grace periods are accelerated:
| Production | Sandbox |
|---|---|
| 30 days | 24 hours |
| Day 7 reminder | Hour 6 reminder |
| Day 21 reminder | Hour 18 reminder |
| Day 28 warning | Hour 22 warning |