---
title: Normalize the ADP format axes onto a declared registry
type: task
status: draft
description: >-
  Split out of the Underdog draft-pool work: give adp_format a code-owned axis registry, add the
  number_rounds axis, and rename the draft_pool axis to eligible_player_pool. No goal trace to
  serving correct ADP, so it is deliberately deferred until a third axis demand exists.
base_uri: user:task/league/normalize-adp-format-axis-registry.md
created_at: '2026-09-09T05:25:19.678Z'
entity_id: 6a3ea61c-08c5-4827-b176-7b43f57ebd12
owner_identity_uri: █████████████████████████
priority: Low
public_read: true
relations:
  - follows [[█████████████████████████-████████-███-█████-██████-███-██████-████-█████████]]
tags:
  - user:tag/league-xo-football.md
updated_at: '2026-09-09T15:26:37.954Z'
visibility_analyzed_at: '2026-11-05T23:49:46.351Z'
---

## Ordering

**This task FOLLOWS [[█████████████████████████-████████-███-█████-██████-███-██████-████-█████████]]**, which shipped on 2026-09-09. That edge is set on the parent as a `precedes` relation, and it is stated here because an edge no sibling body mentions is invisible to whoever reads this task first.

Two things the parent left for this one, both of them deliberate deferrals rather than oversights:

- **The `number_rounds` axis demand is now REAL and measured.** `libs-server/resolve-underdog-best-ball-format.mjs` derives `rounds` from Underdog's own contest style — 18 on every board except superflex at 20 — and has nowhere in `adp_format` to put it. It is currently used only to compute the undrafted sentinel and then discarded. That is the third axis demand this task was waiting for; the first two were the tight-end-premium scoring variant and `number_teams`.

- **The `eligible_player_pool` rename comes with it.** `adp_format.draft_pool` holds `ALL` / `ROOKIE` and means the eligible PLAYER population. The parent added a separate `adp_draft_board` dimension meaning WHICH VENDOR BOARD a number came from, and deliberately did not name it `draft_pool` to avoid two params called some form of "draft pool" in one params object and one UI. Both now render side by side in the ADP column params as **Draft Pool** and **Draft Board**, which is legible but is not the naming anyone would choose from scratch. The rename is what clears it.

Do not attempt the rename without reading the parent's Design section on why `draft_board` was chosen: shipping the colliding name while the rename waited was explicitly ruled out by the operator on 2026-09-09, and reversing that decision here would undo a shipped, applied schema.

## Why it is still deferred

There is no goal trace from an axis registry to serving correct ADP. The parent proved that: it separated ten Underdog boards over four formats and repaired the whole 2026 series without touching the axis set, because the defect was a missing DIMENSION rather than a missing axis. Pick this up when the `number_rounds` demand becomes load-bearing for a consumer, not before.
