---
title: Import external league mirror rookie drafts into the draft table
type: task
status: draft
description: >-
  Mirrors hold no draft rows, so the presence-gated Draft page never appears for them. Import mirror
  rookie-draft picks, starting with Sleeper league 121's 5-round rookie drafts, so the page appears
  for mirrors that run one.
base_uri: user:task/league/import-external-league-mirror-rookie-drafts.md
created_at: '2026-10-07T15:48:23.669Z'
entity_id: 5dc54f72-8e80-421b-a78d-03f1a4b91053
owner_identity_uri: █████████████████████████
priority: Low
public_read: true
relations:
  - relates [[██████████████████████████-██-██████-███████-███-████████-██████████]]
tags:
  - user:tag/league-xo-football.md
  - user:tag/software-task.md
updated_at: '2026-10-07T15:48:23.669Z'
visibility_analyzed_at: '2026-11-05T23:49:37.491Z'
---

# Import external league mirror rookie drafts into the draft table

## Context

- The Draft page reads the `draft` table, which holds rows for league 1 only. Since [[██████████████████████████-██-██████-███████-███-████████-██████████]], the menu and route show Draft only when the league's `has_draft_picks` presence flag is true, so mirrors never get the page today.
- Sleeper mirror league 121 runs a 5-round rookie-only draft every season (snake in 2023-2024, linear in 2025-2026), plus a 35-round startup snake in 2023. League 123 has only a 35-round startup snake in 2026. ESPN league 122 runs a SNAKE draft. Source: Sleeper `/v1/league/<id>/drafts` and `/v1/draft/<draft_id>/picks` (public, no auth).
- Once rows land, `has_draft_picks` turns true and the page appears with no further change.

## Open questions

- Whether a startup draft belongs in `draft` (a rookie-draft table) or is excluded, since the page and its consumers assume rookie picks.
- How mirror picks map to `draft` columns that assume hosted semantics (pick timing windows, `draft_type` cadence, traded-pick provenance).
- Whether ESPN exposes draft history for private leagues through the stored session.
