Skip to content

feat(pantheon): Pantheon 2.0 modes and manifest-driven version lookup - #132

Merged
owens1127 merged 6 commits into
mainfrom
pantheon-2.0-modes
Jun 9, 2026
Merged

feat(pantheon): Pantheon 2.0 modes and manifest-driven version lookup#132
owens1127 merged 6 commits into
mainfrom
pantheon-2.0-modes

Conversation

@owens1127

@owens1127 owens1127 commented Jun 9, 2026

Copy link
Copy Markdown
Contributor

Summary

Pantheon 2.0 API support for dual activities and manifest-driven version lookup.

  • Activity 101 (The Pantheon, path thepantheon, sunset): EP boss versions 128–131
  • Activity 102 (Pantheon, path pantheon, permanent 9.7.0 return): versions 132 Calus, 133 Morgeth
  • getPantheonActivityIds and getPantheonVersionId match both pantheon and thepantheon activity paths (active activity preferred when paths collide)
  • Manifest exposes pantheonIds, gauntletVersionIds (infrastructure for gauntlet modes when present in DB — no hardcoded v134)
  • Individual pantheon leaderboard routes resolve versions by path instead of hardcoded activity 101

Deploy order

  1. Services #46 — schema migration + service code (no seed data in PR)
  2. Run production data steps in docs/pantheon-2.0-deploy-plan.md (activity 101 sunset + thepantheon path, activity 102, versions 132–133, hash mappings)
  3. Refresh leaderboard.individual_pantheon_version_leaderboard
  4. API (this PR) — deploy after Services data is applied
  5. Website #324

Test plan

  • bun test src/services/manifest/pantheon.test.ts
  • bun test src/routes/leaderboard/individual/pantheon.test.ts (legacy versions; Calus/Morgeth need seeded DB)
  • bun run typecheck and bun format --check
  • /manifest returns isSunset for 101, active 102, and gauntletVersionIds when gauntlet versions exist
  • Pantheon leaderboard endpoints for legacy paths (atraks, oryx, etc.) and new paths (calus, morgeth) after data deploy
  • Unknown version paths return PantheonVersionNotFound

Add pantheon manifest helpers, gauntletVersionIds, path-based leaderboard lookup, and sunset-aware activity examples without hardcoding activity 101.

Co-authored-by: Cursor <cursoragent@cursor.com>
…sts.

Gauntlet manifest infrastructure remains; only the hardcoded id 134 definition was removed.

Co-authored-by: Cursor <cursoragent@cursor.com>

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR updates the API’s Pantheon support to handle “Pantheon 2.0” by deriving Pantheon activity/version IDs from manifest data (and DB lookups) instead of hardcoding legacy activity 101, and extends manifest/OpenAPI artifacts to reflect the newer Pantheon IDs and modes.

Changes:

  • Added src/services/manifest/pantheon.ts helpers to derive Pantheon activity IDs, Gauntlet version IDs, and to resolve Pantheon version IDs by (activity.path, version.path) via SQL.
  • Updated /manifest response to return pantheonIds (sorted active-first) and a new gauntletVersionIds field.
  • Updated individual Pantheon leaderboard routing to resolve version IDs via getPantheonVersionId and added a test for the new calus path; updated schema/OpenAPI examples for the new Pantheon IDs/versions.

Reviewed changes

Copilot reviewed 9 out of 9 changed files in this pull request and generated 1 comment.

Show a summary per file
File Description
src/services/manifest/pantheon.ts New Pantheon-specific manifest helpers, including DB-backed version resolution.
src/services/manifest/pantheon.test.ts Unit tests for Pantheon helper logic (activity ID filtering/sorting and gauntlet version ID extraction).
src/services/manifest/definitions.ts Adds a generic getActivityIdByPath DB helper.
src/schema/components/VersionDefinition.ts Extends OpenAPI examples with new Pantheon 2.0 version IDs/paths.
src/schema/components/ActivityDefinition.ts Updates OpenAPI examples to include Pantheon 101/102 activity definitions.
src/routes/manifest.ts Emits pantheonIds and new gauntletVersionIds derived from manifest definitions.
src/routes/leaderboard/individual/pantheon.ts Resolves Pantheon version IDs via manifest-driven lookup instead of hardcoded activity 101.
src/routes/leaderboard/individual/pantheon.test.ts Adds a 200-path test for version=calus.
open-api/openapi.json Regenerated OpenAPI output reflecting the schema/manifest response changes.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment on lines 23 to +26
.openapi({
description: "The definition of an activity in the RaidHub database.",
example: {
id: 9,
name: "Vault of Glass",
path: "vaultofglass",
isSunset: false,
isRaid: true,
releaseDate: new Date("2021-05-22T00:00:00Z"),
dayOneEnd: new Date("2021-05-23T00:00:00Z"),
contestEnd: new Date("2021-05-23T00:00:00Z"),
weekOneEnd: new Date("2021-05-25T00:00:00Z"),
milestoneHash: 1888320892,
splashSlug: "vog"
}
examples: [
{
Query both pantheon activity paths for manifest discovery and leaderboard
version lookup. Remove calus integration test until Services data is seeded.

Co-authored-by: Cursor <cursoragent@cursor.com>
…field.

Recognize both pantheon and thepantheon activity paths for manifest IDs and version lookup; gauntletVersionIds remains manifest-driven with no placeholder version 134.

Co-authored-by: Cursor <cursoragent@cursor.com>
Gauntlet mode details are unknown, so drop gauntletVersionIds and related helpers until Bungie data exists.

Co-authored-by: Cursor <cursoragent@cursor.com>
Reinstate getGauntletVersionIds in manifest response after accidental removal.
Drop calus integration test until Services data is seeded. Regenerate OpenAPI.

Co-authored-by: Cursor <cursoragent@cursor.com>
@owens1127
owens1127 merged commit 427e7a4 into main Jun 9, 2026
6 of 7 checks passed
@owens1127
owens1127 deleted the pantheon-2.0-modes branch June 9, 2026 16:41
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants