Files
gacha-event-tracker/fixtures/pgr/karendar-events-2026-09-12.expected.json
Lucas Winther 4382ed35ee feat: add Punishing: Gray Raven with karendar.com source
Add karendar.com as the event source for Punishing: Gray Raven (PGR).
Karendar publishes a dedicated Global event calendar with exact UTC
timestamps in clean server-rendered HTML.

- Register 'pgr' in GameId and GAMES registry (#CC292B, Kuro Games).
- Add parseWeekdayDayMonthYearUtc in src/ingest/dates.ts with unit tests.
- Implement karendarParser in src/ingest/parsers/karendar.ts reading
  'week', 'ongoing', and 'upcoming' sections, mapping indefinite/permanent
  ends to endsAt: null, and categorizing tags to EventType.
- Register pgr-karendar-events in src/ingest/adapters/index.ts.
- Add pinned fixture, expected output, and comprehensive test suites.
- Update documentation in AGENTS.md, README.md, docs/INGESTION.md,
  and docs/SOURCES.md.
2026-09-12 09:10:02 +02:00

1200 lines
39 KiB
JSON
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
[
{
"id": "pgr:summer-anthem:2026-08-19",
"game": "pgr",
"title": "Summer Anthem",
"type": "shop",
"summary": "Paid RC packs: Melodic Conch 24 RC, Harmony of Hearts 24 RC, Fleeting Melody 30 RC. Avatars and collectibles, 1 each.",
"startsAt": "2026-08-19T05:00:00.000Z",
"startPrecision": "exact",
"endsAt": "2026-09-23T23:00:00.000Z",
"endPrecision": "exact",
"regionScoped": false,
"regionEnds": null,
"sourceUrl": "https://karendar.com/",
"sourceId": "pgr-karendar-events",
"status": "published",
"confidence": 0.95,
"extractionMethod": "parser",
"version": 1,
"firstSeenAt": "2026-08-14T00:00:00.000Z",
"updatedAt": "2026-08-14T00:00:00.000Z"
},
{
"id": "pgr:blazing-rhapsody:2026-08-20",
"game": "pgr",
"title": "Blazing Rhapsody",
"type": "other",
"summary": "Defend the street concert. Soundwave Coins and mission rewards.",
"startsAt": "2026-08-20T05:00:00.000Z",
"startPrecision": "exact",
"endsAt": "2026-09-23T05:00:00.000Z",
"endPrecision": "exact",
"regionScoped": false,
"regionEnds": null,
"sourceUrl": "https://karendar.com/",
"sourceId": "pgr-karendar-events",
"status": "published",
"confidence": 0.95,
"extractionMethod": "parser",
"version": 1,
"firstSeenAt": "2026-08-14T00:00:00.000Z",
"updatedAt": "2026-08-14T00:00:00.000Z"
},
{
"id": "pgr:blazing-rhythm-sfx:2026-08-20",
"game": "pgr",
"title": "Blazing Rhythm (SFX)",
"type": "shop",
"summary": "Karenina: Effulgence SFX coating.",
"startsAt": "2026-08-20T05:00:00.000Z",
"startPrecision": "exact",
"endsAt": "2026-09-23T23:00:00.000Z",
"endPrecision": "exact",
"regionScoped": false,
"regionEnds": null,
"sourceUrl": "https://karendar.com/",
"sourceId": "pgr-karendar-events",
"status": "published",
"confidence": 0.95,
"extractionMethod": "parser",
"version": 1,
"firstSeenAt": "2026-08-14T00:00:00.000Z",
"updatedAt": "2026-08-14T00:00:00.000Z"
},
{
"id": "pgr:bp-hadal-depths-file:2026-08-20",
"game": "pgr",
"title": "BP - Hadal Depths File",
"type": "shop",
"summary": "Battle pass. 6 rounds. Key reward: Karenina: Effulgence alternate coating.",
"startsAt": "2026-08-20T05:00:00.000Z",
"startPrecision": "exact",
"endsAt": "2026-09-23T23:00:00.000Z",
"endPrecision": "exact",
"regionScoped": false,
"regionEnds": null,
"sourceUrl": "https://karendar.com/",
"sourceId": "pgr-karendar-events",
"status": "published",
"confidence": 0.95,
"extractionMethod": "parser",
"version": 1,
"firstSeenAt": "2026-08-14T00:00:00.000Z",
"updatedAt": "2026-08-14T00:00:00.000Z"
},
{
"id": "pgr:breakers-resurfaced:2026-08-20",
"game": "pgr",
"title": "Breakers Resurfaced",
"type": "challenge",
"summary": "Learn character mechanics and combat challenges.",
"startsAt": "2026-08-20T05:00:00.000Z",
"startPrecision": "exact",
"endsAt": "2026-09-23T23:00:00.000Z",
"endPrecision": "exact",
"regionScoped": false,
"regionEnds": null,
"sourceUrl": "https://karendar.com/",
"sourceId": "pgr-karendar-events",
"status": "published",
"confidence": 0.95,
"extractionMethod": "parser",
"version": 1,
"firstSeenAt": "2026-08-14T00:00:00.000Z",
"updatedAt": "2026-08-14T00:00:00.000Z"
},
{
"id": "pgr:cub-patrick:2026-08-20",
"game": "pgr",
"title": "CUB Patrick",
"type": "banner",
"summary": "CUB for Karenina: Effulgence. Active skills deal more damage; Radiant Voyage summons Patrick for a joint attack.",
"startsAt": "2026-08-20T05:00:00.000Z",
"startPrecision": "exact",
"endsAt": "2026-09-23T23:00:00.000Z",
"endPrecision": "exact",
"regionScoped": false,
"regionEnds": null,
"sourceUrl": "https://karendar.com/",
"sourceId": "pgr-karendar-events",
"status": "published",
"confidence": 0.95,
"extractionMethod": "parser",
"version": 1,
"firstSeenAt": "2026-08-14T00:00:00.000Z",
"updatedAt": "2026-08-14T00:00:00.000Z"
},
{
"id": "pgr:drift-into-summer:2026-08-20",
"game": "pgr",
"title": "Drift Into Summer",
"type": "shop",
"summary": "Free Teddy: Spectre coating from Blazing Rhapsody missions.",
"startsAt": "2026-08-20T05:00:00.000Z",
"startPrecision": "exact",
"endsAt": "2026-09-23T05:00:00.000Z",
"endPrecision": "exact",
"regionScoped": false,
"regionEnds": null,
"sourceUrl": "https://karendar.com/",
"sourceId": "pgr-karendar-events",
"status": "published",
"confidence": 0.95,
"extractionMethod": "parser",
"version": 1,
"firstSeenAt": "2026-08-14T00:00:00.000Z",
"updatedAt": "2026-08-14T00:00:00.000Z"
},
{
"id": "pgr:graffiti-code:2026-08-20",
"game": "pgr",
"title": "Graffiti Code",
"type": "shop",
"summary": "Luna: Oblivion coating + portrait, 168 RC. Chakram weapon coating Neon Midway, 28 RC.",
"startsAt": "2026-08-20T05:00:00.000Z",
"startPrecision": "exact",
"endsAt": "2026-09-23T23:00:00.000Z",
"endPrecision": "exact",
"regionScoped": false,
"regionEnds": null,
"sourceUrl": "https://karendar.com/",
"sourceId": "pgr-karendar-events",
"status": "published",
"confidence": 0.95,
"extractionMethod": "parser",
"version": 1,
"firstSeenAt": "2026-08-14T00:00:00.000Z",
"updatedAt": "2026-08-14T00:00:00.000Z"
},
{
"id": "pgr:journal-of-promise:2026-08-20",
"game": "pgr",
"title": "Journal of Promise",
"type": "story",
"summary": "Karenina: Effulgence affection story. Permanent after unlock.",
"startsAt": "2026-08-20T05:00:00.000Z",
"startPrecision": "exact",
"endsAt": null,
"endPrecision": "unknown",
"regionScoped": false,
"regionEnds": null,
"sourceUrl": "https://karendar.com/",
"sourceId": "pgr-karendar-events",
"status": "published",
"confidence": 0.7999999999999999,
"extractionMethod": "parser",
"version": 1,
"firstSeenAt": "2026-08-14T00:00:00.000Z",
"updatedAt": "2026-08-14T00:00:00.000Z"
},
{
"id": "pgr:karenina-effulgence:2026-08-20",
"game": "pgr",
"title": "Karenina: Effulgence",
"type": "banner",
"summary": "S-Rank Omniframe debut. End aligned to patch end pending confirmation.",
"startsAt": "2026-08-20T05:00:00.000Z",
"startPrecision": "exact",
"endsAt": "2026-09-23T23:00:00.000Z",
"endPrecision": "exact",
"regionScoped": false,
"regionEnds": null,
"sourceUrl": "https://karendar.com/",
"sourceId": "pgr-karendar-events",
"status": "published",
"confidence": 0.95,
"extractionMethod": "parser",
"version": 1,
"firstSeenAt": "2026-08-14T00:00:00.000Z",
"updatedAt": "2026-08-14T00:00:00.000Z"
},
{
"id": "pgr:loves-leisure-hour:2026-08-20",
"game": "pgr",
"title": "Love's Leisure Hour",
"type": "story",
"summary": "40 invitations. Daily Leisure Vouchers.",
"startsAt": "2026-08-20T05:00:00.000Z",
"startPrecision": "exact",
"endsAt": "2026-09-23T05:00:00.000Z",
"endPrecision": "exact",
"regionScoped": false,
"regionEnds": null,
"sourceUrl": "https://karendar.com/",
"sourceId": "pgr-karendar-events",
"status": "published",
"confidence": 0.95,
"extractionMethod": "parser",
"version": 1,
"firstSeenAt": "2026-08-14T00:00:00.000Z",
"updatedAt": "2026-08-14T00:00:00.000Z"
},
{
"id": "pgr:main-story-steering-by-light:2026-08-20",
"game": "pgr",
"title": "Main Story: Steering By Light",
"type": "story",
"summary": "New main story chapter. Permanent after unlock.",
"startsAt": "2026-08-20T05:00:00.000Z",
"startPrecision": "exact",
"endsAt": null,
"endPrecision": "unknown",
"regionScoped": false,
"regionEnds": null,
"sourceUrl": "https://karendar.com/",
"sourceId": "pgr-karendar-events",
"status": "published",
"confidence": 0.7999999999999999,
"extractionMethod": "parser",
"version": 1,
"firstSeenAt": "2026-08-14T00:00:00.000Z",
"updatedAt": "2026-08-14T00:00:00.000Z"
},
{
"id": "pgr:neon-flash:2026-08-20",
"game": "pgr",
"title": "Neon Flash",
"type": "shop",
"summary": "Main Interface Scene. 68 RC. Includes two bonus BGM tracks.",
"startsAt": "2026-08-20T05:00:00.000Z",
"startPrecision": "exact",
"endsAt": "2026-09-23T23:00:00.000Z",
"endPrecision": "exact",
"regionScoped": false,
"regionEnds": null,
"sourceUrl": "https://karendar.com/",
"sourceId": "pgr-karendar-events",
"status": "published",
"confidence": 0.95,
"extractionMethod": "parser",
"version": 1,
"firstSeenAt": "2026-08-14T00:00:00.000Z",
"updatedAt": "2026-08-14T00:00:00.000Z"
},
{
"id": "pgr:neon-tidings:2026-08-20",
"game": "pgr",
"title": "Neon Tidings",
"type": "shop",
"summary": "Paid rerun shop. Summer-themed coatings and weapon coatings.",
"startsAt": "2026-08-20T05:00:00.000Z",
"startPrecision": "exact",
"endsAt": "2026-09-23T23:00:00.000Z",
"endPrecision": "exact",
"regionScoped": false,
"regionEnds": null,
"sourceUrl": "https://karendar.com/",
"sourceId": "pgr-karendar-events",
"status": "published",
"confidence": 0.95,
"extractionMethod": "parser",
"version": 1,
"firstSeenAt": "2026-08-14T00:00:00.000Z",
"updatedAt": "2026-08-14T00:00:00.000Z"
},
{
"id": "pgr:revival-remedy:2026-08-20",
"game": "pgr",
"title": "Revival Remedy",
"type": "shop",
"summary": "No.21: Feral coating + portrait, 168 RC. Claw Blades weapon coating Bloom and Boom, 28 RC.",
"startsAt": "2026-08-20T05:00:00.000Z",
"startPrecision": "exact",
"endsAt": "2026-09-23T23:00:00.000Z",
"endPrecision": "exact",
"regionScoped": false,
"regionEnds": null,
"sourceUrl": "https://karendar.com/",
"sourceId": "pgr-karendar-events",
"status": "published",
"confidence": 0.95,
"extractionMethod": "parser",
"version": 1,
"firstSeenAt": "2026-08-14T00:00:00.000Z",
"updatedAt": "2026-08-14T00:00:00.000Z"
},
{
"id": "pgr:ripples-of-starlight:2026-08-20",
"game": "pgr",
"title": "Ripples of Starlight",
"type": "shop",
"summary": "Matching weapon coating for Bianca: Crepuscule.",
"startsAt": "2026-08-20T05:00:00.000Z",
"startPrecision": "exact",
"endsAt": "2026-09-23T23:00:00.000Z",
"endPrecision": "exact",
"regionScoped": false,
"regionEnds": null,
"sourceUrl": "https://karendar.com/",
"sourceId": "pgr-karendar-events",
"status": "published",
"confidence": 0.95,
"extractionMethod": "parser",
"version": 1,
"firstSeenAt": "2026-08-14T00:00:00.000Z",
"updatedAt": "2026-08-14T00:00:00.000Z"
},
{
"id": "pgr:star-of-niflheim:2026-08-20",
"game": "pgr",
"title": "Star of Niflheim",
"type": "banner",
"summary": "Signature 6★ weapon for Karenina: Effulgence. Anchoring this moment, she dives into a sea of the past.",
"startsAt": "2026-08-20T05:00:00.000Z",
"startPrecision": "exact",
"endsAt": "2026-09-23T23:00:00.000Z",
"endPrecision": "exact",
"regionScoped": false,
"regionEnds": null,
"sourceUrl": "https://karendar.com/",
"sourceId": "pgr-karendar-events",
"status": "published",
"confidence": 0.95,
"extractionMethod": "parser",
"version": 1,
"firstSeenAt": "2026-08-14T00:00:00.000Z",
"updatedAt": "2026-08-14T00:00:00.000Z"
},
{
"id": "pgr:storm-sonata:2026-08-20",
"game": "pgr",
"title": "Storm Sonata",
"type": "shop",
"summary": "Matching weapon coating for Karenina.",
"startsAt": "2026-08-20T05:00:00.000Z",
"startPrecision": "exact",
"endsAt": "2026-09-23T23:00:00.000Z",
"endPrecision": "exact",
"regionScoped": false,
"regionEnds": null,
"sourceUrl": "https://karendar.com/",
"sourceId": "pgr-karendar-events",
"status": "published",
"confidence": 0.95,
"extractionMethod": "parser",
"version": 1,
"firstSeenAt": "2026-08-14T00:00:00.000Z",
"updatedAt": "2026-08-14T00:00:00.000Z"
},
{
"id": "pgr:sunlit-tides-sfx:2026-08-20",
"game": "pgr",
"title": "Sunlit Tides (SFX)",
"type": "shop",
"summary": "Bianca: Crepuscule SFX coating. Rainbow Cards required.",
"startsAt": "2026-08-20T05:00:00.000Z",
"startPrecision": "exact",
"endsAt": "2026-09-23T23:00:00.000Z",
"endPrecision": "exact",
"regionScoped": false,
"regionEnds": null,
"sourceUrl": "https://karendar.com/",
"sourceId": "pgr-karendar-events",
"status": "published",
"confidence": 0.95,
"extractionMethod": "parser",
"version": 1,
"firstSeenAt": "2026-08-14T00:00:00.000Z",
"updatedAt": "2026-08-14T00:00:00.000Z"
},
{
"id": "pgr:tidal-wishes-bianca-teddy:2026-08-20",
"game": "pgr",
"title": "Tidal Wishes Bianca & Teddy",
"type": "story",
"summary": "Summer coating stories.",
"startsAt": "2026-08-20T05:00:00.000Z",
"startPrecision": "exact",
"endsAt": "2026-09-23T05:00:00.000Z",
"endPrecision": "exact",
"regionScoped": false,
"regionEnds": null,
"sourceUrl": "https://karendar.com/",
"sourceId": "pgr-karendar-events",
"status": "published",
"confidence": 0.95,
"extractionMethod": "parser",
"version": 1,
"firstSeenAt": "2026-08-14T00:00:00.000Z",
"updatedAt": "2026-08-14T00:00:00.000Z"
},
{
"id": "pgr:tropical-lullaby:2026-08-20",
"game": "pgr",
"title": "Tropical Lullaby",
"type": "shop",
"summary": "Free matching weapon coating from Blazing Rhapsody (pairs with Drift Into Summer).",
"startsAt": "2026-08-20T05:00:00.000Z",
"startPrecision": "exact",
"endsAt": "2026-09-23T05:00:00.000Z",
"endPrecision": "exact",
"regionScoped": false,
"regionEnds": null,
"sourceUrl": "https://karendar.com/",
"sourceId": "pgr-karendar-events",
"status": "published",
"confidence": 0.95,
"extractionMethod": "parser",
"version": 1,
"firstSeenAt": "2026-08-14T00:00:00.000Z",
"updatedAt": "2026-08-14T00:00:00.000Z"
},
{
"id": "pgr:discord-7-day-sign-in:2026-08-20",
"game": "pgr",
"title": "Discord 7-Day Sign-in",
"type": "login",
"summary": "Link Discord and Kuro Pass. R&D Tickets and upgrade items for 7 sign-in days.",
"startsAt": "2026-08-20T10:00:00.000Z",
"startPrecision": "exact",
"endsAt": "2026-09-23T23:00:00.000Z",
"endPrecision": "exact",
"regionScoped": false,
"regionEnds": null,
"sourceUrl": "https://karendar.com/",
"sourceId": "pgr-karendar-events",
"status": "published",
"confidence": 0.95,
"extractionMethod": "parser",
"version": 1,
"firstSeenAt": "2026-08-14T00:00:00.000Z",
"updatedAt": "2026-08-14T00:00:00.000Z"
},
{
"id": "pgr:waves-in-wrath:2026-08-20",
"game": "pgr",
"title": "Waves in Wrath",
"type": "challenge",
"summary": "High-difficulty boss challenge vs Mannan M-1A.",
"startsAt": "2026-08-20T10:00:00.000Z",
"startPrecision": "exact",
"endsAt": "2026-09-14T05:00:00.000Z",
"endPrecision": "exact",
"regionScoped": false,
"regionEnds": null,
"sourceUrl": "https://karendar.com/",
"sourceId": "pgr-karendar-events",
"status": "published",
"confidence": 0.95,
"extractionMethod": "parser",
"version": 1,
"firstSeenAt": "2026-08-14T00:00:00.000Z",
"updatedAt": "2026-08-14T00:00:00.000Z"
},
{
"id": "pgr:fleeting-memories:2026-08-26",
"game": "pgr",
"title": "Fleeting Memories",
"type": "shop",
"summary": "Coating research rerun. Tainted Moonrise, Grandiose Glamor, Neon Dynamite ☆, Nightfall Finale. Pity at 10.",
"startsAt": "2026-08-26T10:00:00.000Z",
"startPrecision": "exact",
"endsAt": "2026-09-23T23:00:00.000Z",
"endPrecision": "exact",
"regionScoped": false,
"regionEnds": null,
"sourceUrl": "https://karendar.com/",
"sourceId": "pgr-karendar-events",
"status": "published",
"confidence": 0.95,
"extractionMethod": "parser",
"version": 1,
"firstSeenAt": "2026-08-14T00:00:00.000Z",
"updatedAt": "2026-08-14T00:00:00.000Z"
},
{
"id": "pgr:her-merciful-gaze:2026-08-26",
"game": "pgr",
"title": "Her Merciful Gaze",
"type": "shop",
"summary": "Main Interface Scene rerun. 68 RC. Ishmael: Parhelion coating Nightfall Finale can trigger a special pose.",
"startsAt": "2026-08-26T10:00:00.000Z",
"startPrecision": "exact",
"endsAt": "2026-09-23T23:00:00.000Z",
"endPrecision": "exact",
"regionScoped": false,
"regionEnds": null,
"sourceUrl": "https://karendar.com/",
"sourceId": "pgr-karendar-events",
"status": "published",
"confidence": 0.95,
"extractionMethod": "parser",
"version": 1,
"firstSeenAt": "2026-08-14T00:00:00.000Z",
"updatedAt": "2026-08-14T00:00:00.000Z"
},
{
"id": "pgr:ruins-of-adieu:2026-08-26",
"game": "pgr",
"title": "Ruins of Adieu",
"type": "shop",
"summary": "Main Interface Scene rerun. 68 RC. Luna: Oblivion coating Tainted Moonrise can trigger a special pose.",
"startsAt": "2026-08-26T10:00:00.000Z",
"startPrecision": "exact",
"endsAt": "2026-09-23T23:00:00.000Z",
"endPrecision": "exact",
"regionScoped": false,
"regionEnds": null,
"sourceUrl": "https://karendar.com/",
"sourceId": "pgr-karendar-events",
"status": "published",
"confidence": 0.95,
"extractionMethod": "parser",
"version": 1,
"firstSeenAt": "2026-08-14T00:00:00.000Z",
"updatedAt": "2026-08-14T00:00:00.000Z"
},
{
"id": "pgr:s-rank-inver-shard-discount:2026-09-01",
"game": "pgr",
"title": "S-Rank Inver-Shard Discount",
"type": "shop",
"summary": "20 shards per discounted S-Rank at ~33% off (804 vs 1200). Resets 1st of the month 05:00 UTC.",
"startsAt": "2026-09-01T05:00:00.000Z",
"startPrecision": "exact",
"endsAt": "2026-10-01T05:00:00.000Z",
"endPrecision": "exact",
"regionScoped": false,
"regionEnds": null,
"sourceUrl": "https://karendar.com/",
"sourceId": "pgr-karendar-events",
"status": "published",
"confidence": 0.95,
"extractionMethod": "parser",
"version": 1,
"firstSeenAt": "2026-08-14T00:00:00.000Z",
"updatedAt": "2026-08-14T00:00:00.000Z"
},
{
"id": "pgr:norman-revival-plan:2026-09-03",
"game": "pgr",
"title": "Norman Revival Plan",
"type": "challenge",
"summary": "14-day cycle. Refresh Thursday 05:00 UTC.",
"startsAt": "2026-09-03T05:00:00.000Z",
"startPrecision": "exact",
"endsAt": "2026-09-17T05:00:00.000Z",
"endPrecision": "exact",
"regionScoped": false,
"regionEnds": null,
"sourceUrl": "https://karendar.com/",
"sourceId": "pgr-karendar-events",
"status": "published",
"confidence": 0.95,
"extractionMethod": "parser",
"version": 1,
"firstSeenAt": "2026-08-14T00:00:00.000Z",
"updatedAt": "2026-08-14T00:00:00.000Z"
},
{
"id": "pgr:70-rate-up-crepuscule-arete-spectre:2026-09-03",
"game": "pgr",
"title": "70% Rate-Up: Crepuscule, Arete, Spectre",
"type": "banner",
"summary": "The 70% rate-up event for S-Rank Omniframes Bianca: Crepuscule & Rosetta: Arete & Teddy: Spectre. Official Global window 09/03 07:00 09/17 06:59 UTC.",
"startsAt": "2026-09-03T07:00:00.000Z",
"startPrecision": "exact",
"endsAt": "2026-09-17T06:59:00.000Z",
"endPrecision": "exact",
"regionScoped": false,
"regionEnds": null,
"sourceUrl": "https://karendar.com/",
"sourceId": "pgr-karendar-events",
"status": "published",
"confidence": 0.95,
"extractionMethod": "parser",
"version": 1,
"firstSeenAt": "2026-08-14T00:00:00.000Z",
"updatedAt": "2026-08-14T00:00:00.000Z"
},
{
"id": "pgr:rapid-pursuit:2026-09-03",
"game": "pgr",
"title": "Rapid Pursuit",
"type": "challenge",
"summary": "4 stages × 3 difficulties. Limited characters. R&D Ticket x500, Trade Voucher x500, collectible A Blurry Bounty Notice?, training mats.",
"startsAt": "2026-09-03T10:00:00.000Z",
"startPrecision": "exact",
"endsAt": "2026-09-23T05:00:00.000Z",
"endPrecision": "exact",
"regionScoped": false,
"regionEnds": null,
"sourceUrl": "https://karendar.com/",
"sourceId": "pgr-karendar-events",
"status": "published",
"confidence": 0.95,
"extractionMethod": "parser",
"version": 1,
"firstSeenAt": "2026-08-14T00:00:00.000Z",
"updatedAt": "2026-08-14T00:00:00.000Z"
},
{
"id": "pgr:guild-simulated-siege:2026-09-07",
"game": "pgr",
"title": "Guild > Simulated Siege",
"type": "challenge",
"summary": "Weekly guild mode. Resets Monday 05:00 UTC.",
"startsAt": "2026-09-07T05:00:00.000Z",
"startPrecision": "exact",
"endsAt": "2026-09-14T05:00:00.000Z",
"endPrecision": "exact",
"regionScoped": false,
"regionEnds": null,
"sourceUrl": "https://karendar.com/",
"sourceId": "pgr-karendar-events",
"status": "published",
"confidence": 0.95,
"extractionMethod": "parser",
"version": 1,
"firstSeenAt": "2026-08-14T00:00:00.000Z",
"updatedAt": "2026-08-14T00:00:00.000Z"
},
{
"id": "pgr:missions-operation-guardians:2026-09-07",
"game": "pgr",
"title": "Missions > Operation Guardians",
"type": "other",
"summary": "Weekly. Gives Daily Action Points; needs multiple days, usually not a full week. Resets Monday 05:00 UTC.",
"startsAt": "2026-09-07T05:00:00.000Z",
"startPrecision": "exact",
"endsAt": "2026-09-14T05:00:00.000Z",
"endPrecision": "exact",
"regionScoped": false,
"regionEnds": null,
"sourceUrl": "https://karendar.com/",
"sourceId": "pgr-karendar-events",
"status": "published",
"confidence": 0.95,
"extractionMethod": "parser",
"version": 1,
"firstSeenAt": "2026-08-14T00:00:00.000Z",
"updatedAt": "2026-08-14T00:00:00.000Z"
},
{
"id": "pgr:phantom-pain-cage:2026-09-07",
"game": "pgr",
"title": "Phantom Pain Cage",
"type": "challenge",
"summary": "Weekly cycle. Resets Monday 05:00 UTC.",
"startsAt": "2026-09-07T05:00:00.000Z",
"startPrecision": "exact",
"endsAt": "2026-09-14T05:00:00.000Z",
"endPrecision": "exact",
"regionScoped": false,
"regionEnds": null,
"sourceUrl": "https://karendar.com/",
"sourceId": "pgr-karendar-events",
"status": "published",
"confidence": 0.95,
"extractionMethod": "parser",
"version": 1,
"firstSeenAt": "2026-08-14T00:00:00.000Z",
"updatedAt": "2026-08-14T00:00:00.000Z"
},
{
"id": "pgr:war-zone:2026-09-07",
"game": "pgr",
"title": "War Zone",
"type": "challenge",
"summary": "Weekly. Monday 07:00 Sunday 18:00 UTC.",
"startsAt": "2026-09-07T07:00:00.000Z",
"startPrecision": "exact",
"endsAt": "2026-09-13T18:00:00.000Z",
"endPrecision": "exact",
"regionScoped": false,
"regionEnds": null,
"sourceUrl": "https://karendar.com/",
"sourceId": "pgr-karendar-events",
"status": "published",
"confidence": 0.95,
"extractionMethod": "parser",
"version": 1,
"firstSeenAt": "2026-08-14T00:00:00.000Z",
"updatedAt": "2026-08-14T00:00:00.000Z"
},
{
"id": "pgr:clash-reflection:2026-09-10",
"game": "pgr",
"title": "Clash Reflection",
"type": "challenge",
"summary": "14-day cycle. Refresh Thursday 05:00 UTC.",
"startsAt": "2026-09-10T05:00:00.000Z",
"startPrecision": "exact",
"endsAt": "2026-09-23T23:00:00.000Z",
"endPrecision": "exact",
"regionScoped": false,
"regionEnds": null,
"sourceUrl": "https://karendar.com/",
"sourceId": "pgr-karendar-events",
"status": "published",
"confidence": 0.95,
"extractionMethod": "parser",
"version": 1,
"firstSeenAt": "2026-08-14T00:00:00.000Z",
"updatedAt": "2026-08-14T00:00:00.000Z"
},
{
"id": "pgr:steering-by-light-survey:2026-09-11",
"game": "pgr",
"title": "Steering By Light Survey",
"type": "other",
"summary": "Questionnaire via in-game mail. Reward: Black Card ×150.",
"startsAt": "2026-09-11T09:00:00.000Z",
"startPrecision": "exact",
"endsAt": "2026-09-14T04:00:00.000Z",
"endPrecision": "exact",
"regionScoped": false,
"regionEnds": null,
"sourceUrl": "https://karendar.com/",
"sourceId": "pgr-karendar-events",
"status": "published",
"confidence": 0.95,
"extractionMethod": "parser",
"version": 1,
"firstSeenAt": "2026-08-14T00:00:00.000Z",
"updatedAt": "2026-08-14T00:00:00.000Z"
},
{
"id": "pgr:guild-simulated-siege:2026-09-14",
"game": "pgr",
"title": "Guild > Simulated Siege",
"type": "challenge",
"summary": "Weekly guild mode. Resets Monday 05:00 UTC.",
"startsAt": "2026-09-14T05:00:00.000Z",
"startPrecision": "exact",
"endsAt": "2026-09-21T05:00:00.000Z",
"endPrecision": "exact",
"regionScoped": false,
"regionEnds": null,
"sourceUrl": "https://karendar.com/",
"sourceId": "pgr-karendar-events",
"status": "published",
"confidence": 0.95,
"extractionMethod": "parser",
"version": 1,
"firstSeenAt": "2026-08-14T00:00:00.000Z",
"updatedAt": "2026-08-14T00:00:00.000Z"
},
{
"id": "pgr:missions-operation-guardians:2026-09-14",
"game": "pgr",
"title": "Missions > Operation Guardians",
"type": "other",
"summary": "Weekly. Gives Daily Action Points; needs multiple days, usually not a full week. Resets Monday 05:00 UTC.",
"startsAt": "2026-09-14T05:00:00.000Z",
"startPrecision": "exact",
"endsAt": "2026-09-21T05:00:00.000Z",
"endPrecision": "exact",
"regionScoped": false,
"regionEnds": null,
"sourceUrl": "https://karendar.com/",
"sourceId": "pgr-karendar-events",
"status": "published",
"confidence": 0.95,
"extractionMethod": "parser",
"version": 1,
"firstSeenAt": "2026-08-14T00:00:00.000Z",
"updatedAt": "2026-08-14T00:00:00.000Z"
},
{
"id": "pgr:phantom-pain-cage:2026-09-14",
"game": "pgr",
"title": "Phantom Pain Cage",
"type": "challenge",
"summary": "Weekly cycle. Resets Monday 05:00 UTC.",
"startsAt": "2026-09-14T05:00:00.000Z",
"startPrecision": "exact",
"endsAt": "2026-09-21T05:00:00.000Z",
"endPrecision": "exact",
"regionScoped": false,
"regionEnds": null,
"sourceUrl": "https://karendar.com/",
"sourceId": "pgr-karendar-events",
"status": "published",
"confidence": 0.95,
"extractionMethod": "parser",
"version": 1,
"firstSeenAt": "2026-08-14T00:00:00.000Z",
"updatedAt": "2026-08-14T00:00:00.000Z"
},
{
"id": "pgr:war-zone:2026-09-14",
"game": "pgr",
"title": "War Zone",
"type": "challenge",
"summary": "Weekly. Monday 07:00 Sunday 18:00 UTC.",
"startsAt": "2026-09-14T07:00:00.000Z",
"startPrecision": "exact",
"endsAt": "2026-09-20T18:00:00.000Z",
"endPrecision": "exact",
"regionScoped": false,
"regionEnds": null,
"sourceUrl": "https://karendar.com/",
"sourceId": "pgr-karendar-events",
"status": "published",
"confidence": 0.95,
"extractionMethod": "parser",
"version": 1,
"firstSeenAt": "2026-08-14T00:00:00.000Z",
"updatedAt": "2026-08-14T00:00:00.000Z"
},
{
"id": "pgr:norman-revival-plan:2026-09-17",
"game": "pgr",
"title": "Norman Revival Plan",
"type": "challenge",
"summary": "14-day cycle. Refresh Thursday 05:00 UTC.",
"startsAt": "2026-09-17T05:00:00.000Z",
"startPrecision": "exact",
"endsAt": "2026-09-23T23:00:00.000Z",
"endPrecision": "exact",
"regionScoped": false,
"regionEnds": null,
"sourceUrl": "https://karendar.com/",
"sourceId": "pgr-karendar-events",
"status": "published",
"confidence": 0.95,
"extractionMethod": "parser",
"version": 1,
"firstSeenAt": "2026-08-14T00:00:00.000Z",
"updatedAt": "2026-08-14T00:00:00.000Z"
},
{
"id": "pgr:guild-simulated-siege:2026-09-21",
"game": "pgr",
"title": "Guild > Simulated Siege",
"type": "challenge",
"summary": "Weekly guild mode. Resets Monday 05:00 UTC.",
"startsAt": "2026-09-21T05:00:00.000Z",
"startPrecision": "exact",
"endsAt": "2026-09-23T23:00:00.000Z",
"endPrecision": "exact",
"regionScoped": false,
"regionEnds": null,
"sourceUrl": "https://karendar.com/",
"sourceId": "pgr-karendar-events",
"status": "published",
"confidence": 0.95,
"extractionMethod": "parser",
"version": 1,
"firstSeenAt": "2026-08-14T00:00:00.000Z",
"updatedAt": "2026-08-14T00:00:00.000Z"
},
{
"id": "pgr:missions-operation-guardians:2026-09-21",
"game": "pgr",
"title": "Missions > Operation Guardians",
"type": "other",
"summary": "Weekly. Gives Daily Action Points; needs multiple days, usually not a full week. Resets Monday 05:00 UTC.",
"startsAt": "2026-09-21T05:00:00.000Z",
"startPrecision": "exact",
"endsAt": "2026-09-23T23:00:00.000Z",
"endPrecision": "exact",
"regionScoped": false,
"regionEnds": null,
"sourceUrl": "https://karendar.com/",
"sourceId": "pgr-karendar-events",
"status": "published",
"confidence": 0.95,
"extractionMethod": "parser",
"version": 1,
"firstSeenAt": "2026-08-14T00:00:00.000Z",
"updatedAt": "2026-08-14T00:00:00.000Z"
},
{
"id": "pgr:phantom-pain-cage:2026-09-21",
"game": "pgr",
"title": "Phantom Pain Cage",
"type": "challenge",
"summary": "Weekly cycle. Resets Monday 05:00 UTC.",
"startsAt": "2026-09-21T05:00:00.000Z",
"startPrecision": "exact",
"endsAt": "2026-09-23T23:00:00.000Z",
"endPrecision": "exact",
"regionScoped": false,
"regionEnds": null,
"sourceUrl": "https://karendar.com/",
"sourceId": "pgr-karendar-events",
"status": "published",
"confidence": 0.95,
"extractionMethod": "parser",
"version": 1,
"firstSeenAt": "2026-08-14T00:00:00.000Z",
"updatedAt": "2026-08-14T00:00:00.000Z"
},
{
"id": "pgr:war-zone:2026-09-21",
"game": "pgr",
"title": "War Zone",
"type": "challenge",
"summary": "Weekly. Monday 07:00 Sunday 18:00 UTC.",
"startsAt": "2026-09-21T07:00:00.000Z",
"startPrecision": "exact",
"endsAt": "2026-09-23T23:00:00.000Z",
"endPrecision": "exact",
"regionScoped": false,
"regionEnds": null,
"sourceUrl": "https://karendar.com/",
"sourceId": "pgr-karendar-events",
"status": "published",
"confidence": 0.95,
"extractionMethod": "parser",
"version": 1,
"firstSeenAt": "2026-08-14T00:00:00.000Z",
"updatedAt": "2026-08-14T00:00:00.000Z"
},
{
"id": "pgr:patch-end-maintenance:2026-09-23",
"game": "pgr",
"title": "Patch End Maintenance",
"type": "maintenance",
"summary": "Steering By Light ends 23 Sep 23:00 UTC. Window estimated from the last patch (23:0005:00). Anchored in Faith expected after this.",
"startsAt": "2026-09-23T23:00:00.000Z",
"startPrecision": "exact",
"endsAt": "2026-09-24T05:00:00.000Z",
"endPrecision": "exact",
"regionScoped": false,
"regionEnds": null,
"sourceUrl": "https://karendar.com/",
"sourceId": "pgr-karendar-events",
"status": "published",
"confidence": 0.95,
"extractionMethod": "parser",
"version": 1,
"firstSeenAt": "2026-08-14T00:00:00.000Z",
"updatedAt": "2026-08-14T00:00:00.000Z"
},
{
"id": "pgr:anchored-in-faith-adelyde-anabasis:2026-09-24",
"game": "pgr",
"title": "Anchored in Faith Adelyde: Anabasis",
"type": "banner",
"summary": "S-Rank debut 24 Sep 05:00 UTC. Clear Journal of Promise for a free Adelyde (limited time). Inver-Shards, 6★ Unforsaken Beacon, and CUB Kelpie via Service Shop. Dark / Overlinker / Cross Cannon / Ultima Slash. End unknown.",
"startsAt": "2026-09-24T05:00:00.000Z",
"startPrecision": "exact",
"endsAt": null,
"endPrecision": "unknown",
"regionScoped": false,
"regionEnds": null,
"sourceUrl": "https://karendar.com/",
"sourceId": "pgr-karendar-events",
"status": "published",
"confidence": 0.7999999999999999,
"extractionMethod": "parser",
"version": 1,
"firstSeenAt": "2026-08-14T00:00:00.000Z",
"updatedAt": "2026-08-14T00:00:00.000Z"
},
{
"id": "pgr:bp-adelyde-alternate-coating:2026-09-24",
"game": "pgr",
"title": "BP Adelyde Alternate Coating",
"type": "shop",
"summary": "Alternate colour coating for Adelyde: Anabasis. Other details TBC. End unknown.",
"startsAt": "2026-09-24T05:00:00.000Z",
"startPrecision": "exact",
"endsAt": null,
"endPrecision": "unknown",
"regionScoped": false,
"regionEnds": null,
"sourceUrl": "https://karendar.com/",
"sourceId": "pgr-karendar-events",
"status": "published",
"confidence": 0.7999999999999999,
"extractionMethod": "parser",
"version": 1,
"firstSeenAt": "2026-08-14T00:00:00.000Z",
"updatedAt": "2026-08-14T00:00:00.000Z"
},
{
"id": "pgr:cub-kelpie:2026-09-24",
"game": "pgr",
"title": "CUB Kelpie",
"type": "banner",
"summary": "Exclusive CUB for Adelyde: Anabasis. Listed as a free Service Shop reward after the version update. End unknown.",
"startsAt": "2026-09-24T05:00:00.000Z",
"startPrecision": "exact",
"endsAt": null,
"endPrecision": "unknown",
"regionScoped": false,
"regionEnds": null,
"sourceUrl": "https://karendar.com/",
"sourceId": "pgr-karendar-events",
"status": "published",
"confidence": 0.7999999999999999,
"extractionMethod": "parser",
"version": 1,
"firstSeenAt": "2026-08-14T00:00:00.000Z",
"updatedAt": "2026-08-14T00:00:00.000Z"
},
{
"id": "pgr:journal-of-promise-adelyde-anabasis:2026-09-24",
"game": "pgr",
"title": "Journal of Promise — Adelyde: Anabasis",
"type": "story",
"summary": "New fully-voiced affection story. Clear during the version to obtain Adelyde: Anabasis ×1. End unknown.",
"startsAt": "2026-09-24T05:00:00.000Z",
"startPrecision": "exact",
"endsAt": null,
"endPrecision": "unknown",
"regionScoped": false,
"regionEnds": null,
"sourceUrl": "https://karendar.com/",
"sourceId": "pgr-karendar-events",
"status": "published",
"confidence": 0.7999999999999999,
"extractionMethod": "parser",
"version": 1,
"firstSeenAt": "2026-08-14T00:00:00.000Z",
"updatedAt": "2026-08-14T00:00:00.000Z"
},
{
"id": "pgr:unforsaken-beacon:2026-09-24",
"game": "pgr",
"title": "Unforsaken Beacon",
"type": "banner",
"summary": "6★ signature weapon for Adelyde: Anabasis. Listed as a free Service Shop reward after the version update. End unknown.",
"startsAt": "2026-09-24T05:00:00.000Z",
"startPrecision": "exact",
"endsAt": null,
"endPrecision": "unknown",
"regionScoped": false,
"regionEnds": null,
"sourceUrl": "https://karendar.com/",
"sourceId": "pgr-karendar-events",
"status": "published",
"confidence": 0.7999999999999999,
"extractionMethod": "parser",
"version": 1,
"firstSeenAt": "2026-08-14T00:00:00.000Z",
"updatedAt": "2026-08-14T00:00:00.000Z"
},
{
"id": "pgr:selena-activation-day:2026-09-27",
"game": "pgr",
"title": "Selena Activation Day",
"type": "other",
"summary": "Happy Activation Day Selena!",
"startsAt": "2026-09-27T05:00:00.000Z",
"startPrecision": "exact",
"endsAt": "2026-09-28T05:00:00.000Z",
"endPrecision": "exact",
"regionScoped": false,
"regionEnds": null,
"sourceUrl": "https://karendar.com/",
"sourceId": "pgr-karendar-events",
"status": "published",
"confidence": 0.95,
"extractionMethod": "parser",
"version": 1,
"firstSeenAt": "2026-08-14T00:00:00.000Z",
"updatedAt": "2026-08-14T00:00:00.000Z"
},
{
"id": "pgr:dream-of-stagnant-cycle:2026-09-29",
"game": "pgr",
"title": "Dream of Stagnant Cycle",
"type": "story",
"summary": "Date A Live V collab story. Unlock after clearing Main Story 1-12. End unknown.",
"startsAt": "2026-09-29T05:00:00.000Z",
"startPrecision": "exact",
"endsAt": null,
"endPrecision": "unknown",
"regionScoped": false,
"regionEnds": null,
"sourceUrl": "https://karendar.com/",
"sourceId": "pgr-karendar-events",
"status": "published",
"confidence": 0.7999999999999999,
"extractionMethod": "parser",
"version": 1,
"firstSeenAt": "2026-08-14T00:00:00.000Z",
"updatedAt": "2026-08-14T00:00:00.000Z"
},
{
"id": "pgr:ember-ceremony:2026-09-29",
"game": "pgr",
"title": "Ember Ceremony",
"type": "shop",
"summary": "Jetavie: Daybreak collab coating. Price TBC. End unknown.",
"startsAt": "2026-09-29T05:00:00.000Z",
"startPrecision": "exact",
"endsAt": null,
"endPrecision": "unknown",
"regionScoped": false,
"regionEnds": null,
"sourceUrl": "https://karendar.com/",
"sourceId": "pgr-karendar-events",
"status": "published",
"confidence": 0.7999999999999999,
"extractionMethod": "parser",
"version": 1,
"firstSeenAt": "2026-08-14T00:00:00.000Z",
"updatedAt": "2026-08-14T00:00:00.000Z"
},
{
"id": "pgr:pgr-date-a-live-v-kurumi-tokisaki:2026-09-29",
"game": "pgr",
"title": "PGR × Date A Live V Kurumi Tokisaki",
"type": "banner",
"summary": "Collab goes live 29 Sep (clock not posted; using daily reset). 30% off collab character research. Extra copy the first two times from research. Story: Dream of Stagnant Cycle. End unknown.",
"startsAt": "2026-09-29T05:00:00.000Z",
"startPrecision": "exact",
"endsAt": null,
"endPrecision": "unknown",
"regionScoped": false,
"regionEnds": null,
"sourceUrl": "https://karendar.com/",
"sourceId": "pgr-karendar-events",
"status": "published",
"confidence": 0.7999999999999999,
"extractionMethod": "parser",
"version": 1,
"firstSeenAt": "2026-08-14T00:00:00.000Z",
"updatedAt": "2026-08-14T00:00:00.000Z"
},
{
"id": "pgr:visitor-from-afar-sign-in-for-42-pulls:2026-09-29",
"game": "pgr",
"title": "Visitor from Afar — Sign-in for 42 Pulls",
"type": "login",
"summary": "Collab sign-in. Collab Character Research Attempt ×24, Collab Weapon Research Attempt ×14, Event Construct R&D Ticket ×1,000. End unknown.",
"startsAt": "2026-09-29T05:00:00.000Z",
"startPrecision": "exact",
"endsAt": null,
"endPrecision": "unknown",
"regionScoped": false,
"regionEnds": null,
"sourceUrl": "https://karendar.com/",
"sourceId": "pgr-karendar-events",
"status": "published",
"confidence": 0.7999999999999999,
"extractionMethod": "parser",
"version": 1,
"firstSeenAt": "2026-08-14T00:00:00.000Z",
"updatedAt": "2026-08-14T00:00:00.000Z"
},
{
"id": "pgr:overclock-simulation:2026-09-29",
"game": "pgr",
"title": "Overclock Simulation",
"type": "challenge",
"summary": "Classic frames with boosted stats vs powerful enemies. Other details TBC.",
"startsAt": "2026-09-29T10:00:00.000Z",
"startPrecision": "exact",
"endsAt": "2026-11-04T05:00:00.000Z",
"endPrecision": "exact",
"regionScoped": false,
"regionEnds": null,
"sourceUrl": "https://karendar.com/",
"sourceId": "pgr-karendar-events",
"status": "published",
"confidence": 0.95,
"extractionMethod": "parser",
"version": 1,
"firstSeenAt": "2026-08-14T00:00:00.000Z",
"updatedAt": "2026-08-14T00:00:00.000Z"
}
]