---
title: Draw game path personnel, roles and a constrained lineup
type: task
status: planned
description: >-
  Line and defense role definitions, roles measured inside the unit with the cross-team yards
  fallback retired, personnel and defense-answer stages, a lineup seated to the drawn personnel
  knowing the call, player groups and usage dials replacing game form.
base_uri: user:task/league/draw-game-path-roles-personnel-and-lineup.md
created_at: '2026-11-03T16:34:55.885Z'
entity_id: c46c6406-000e-4718-9f0f-000389f79db1
observations:
  - ████████████████████████████████████████████████
  - ████████████████████████████████████████████████
owner_identity_uri: █████████████████████████
priority: High
public_read: true
relations:
  - subtask_of [[user:task/league/build-game-path-owner-profile-foundation.md]]
  - blocked_by [[user:task/league/draw-game-path-owner-dials.md]]
tags:
  - user:tag/league-xo-football.md
  - user:tag/nfl-betting.md
updated_at: '2026-11-04T03:31:57.450Z'
visibility_analyzed_at: '2026-11-05T23:49:11.131Z'
---

# Draw game path personnel, roles and a constrained lineup

A phase of [[user:task/league/build-game-path-owner-profile-foundation.md]], which holds the overview, background, design, assumptions and notes this plan relies on; read its Design and Notes first. Paths are relative to `repository/active/league/` unless they start with a user-base directory.

## Plan

### Roles, personnel and lineup

- [ ] **Role definitions for the line and the defense**
  - File: `libs-shared/nfl-player-archetypes/nfl-player-archetype-registry.mjs`
  - Purpose: the personnel and lineup steps seat linemen and defenders by role.
  - Changes: identity-only definitions such as slot corner, box safety, stand-up edge, pulling guard, read from 2025-onward charted roles.
  - Verify: `scripts/report-nfl-player-archetypes.mjs --team GB CAR` lists line and defense memberships with k of n.

- [ ] **Roles inside the unit; retire the cross-team yards fallback**
  - File: `libs-shared/nfl-player-archetypes/nfl-player-archetype-registry.mjs`, `derive-nfl-room-role-usage.mjs`; `game-path-stage-pieces.mjs:83-99` (`engine.open_field_player_yards`); `build-game-path-touch-tables.mjs`; `draw-game-path-touch.mjs`; `simulate-game-path.mjs`; `summarize-game-path-coverage.mjs`; `scripts/report-nfl-game-path-coverage.mjs`; `app/views/pages/game-path-tree/game-path-run-coverage.js`; the four specs that cover the fallback
  - Purpose: roles carry plan-driven numbers measured in the unit; no player draws another team's yards.
  - Changes: role measures within the unit; remove the archetype source from player yards, so a player without his own plays becomes refused usage mass; remove the archetype-share diagnostic after its verify.
  - Verify: the coverage report's archetype-fallback yard share reads 0 and refused usage is reported per team; the forward gate passes, refusal mass counted as widening.

- [ ] **Personnel and formation stage; defense answer stage**
  - File: new `stages/offense-personnel.mjs`, `stages/defense-answer.mjs`; `game-path-match-ladders.mjs`
  - Purpose: the offensive caller picks personnel and formation; the defensive caller answers.
  - Changes: personnel and formation drawn from the caller's own plays in the situation, limited to games the available room could field; personnel, front and box answered from the defensive caller's own snaps.
  - Verify: a spec refuses a personnel the room cannot fill; the forward gate passes.

- [ ] **Constrained lineup, knowing the call**
  - File: `stages/lineup.mjs`, `libs-shared/nfl-game-path-simulation/build-game-path-lineup-table.mjs`; the conditioning from `engine/lineup-by-call` (`39ac29901`)
  - Purpose: today's players fill the drawn personnel's exact counts, offense and defense.
  - Changes: seat players by role on-field rate in the personnel, conditioned on the call and fatigue load; delete the branch and its worktree.
  - Verify: a spec asserts every snap's on-field counts equal the drawn personnel; the forward gate passes on the rushing and receiving families; branch gone.

- [ ] **Player groups, usage dials and the end of game form**
  - File: new `libs-shared/nfl-game-path-profiles/derive-player-groups.mjs`; the runner; `game-path-match-ladders.mjs`
  - Purpose: groups own joint work; usage dials take over the per-path variation form provided.
  - Changes: derive line five, quarterback-target, backfield pair, front and secondary groups per as-of; add role usage dials; remove form games.
  - Verify: week 9 per-team counts show a line-five and front group snapshot for every team; `rg "FORM_GAME_COUNT|form_esbids|derive_game_path_form_touch_table|lookup_form_cell"` returns nothing; the forward gate passes.
