---
title: Surface sanctuary poaching periods across the league client
type: task
status: completed
description: >-
  The league client communicates every sanctuary poaching period: the league-wide windows on the
  calendar, and the per-player 24h-after-signing window on the rosters page poach menu item. Shipped
  and deployed.
base_uri: user:task/league/surface-sanctuary-poaching-periods.md
created_at: '2026-09-08T14:51:06.458Z'
entity_id: 0a76e8f9-6b05-4e51-850c-d0633078212c
finished_at: '2026-09-08T19:12:36.531Z'
observations:
  - ████████████████████████████████████████████████
  - ████████████████████████████████████████████████
owner_identity_uri: █████████████████████████
priority: Medium
public_read: true
started_at: '2026-09-08T17:43:17.649Z'
tags:
  - user:tag/league-xo-football.md
updated_at: '2026-09-08T19:12:45.599Z'
visibility_analyzed_at: '2026-11-05T23:50:32.502Z'
---

## Current State

Complete and deployed. The league calendar communicates every league-wide sanctuary poaching period (§15.1, the pre-extension-deadline window, the §15.3 free-agency period), and the rosters page states the per-player §15.2 window on the poach menu item. Production carries all of it.

## Plan

- DONE: get_league_events lists Sanctuary Poaching Period Begins/Ends for the league-wide Amendment XI sec 15 periods.
- DONE: get_sanctuary_poaching_periods adds the pre-extension-deadline window, mirroring is-santuary-period.mjs.
- DONE (tested): libs-shared.get-sanctuary-poaching-periods.spec.mjs covers all boundaries.
- DONE (reviewed + deployed): b47b0226c and bcb9e1247 final-reviewed; both sit in the deployed origin tip and its bundle.
- DONE (deployed): sec 15.2 per-player surface at roster level — getPlayerStatus exposes status.sanctuary.poach_unavailable_until and the poach menu item states "Poaching unavailable until …" when the per-player window closes a direct poach (21db6bdb0); season.mjs consumer-comment fix (3a2918398).
- DONE (tested): app.sanctuary-poach-note.spec.mjs pins the note's two positional guards (d9163ee22), verified by four mutations that each reddened exactly one check.

## Dependencies

None outstanding.
