# ECP-0098: NBC Native Auth Completion and Explicit Guide Program Labels

Status: Proposed

## Decision

Tighten the macOS-native NBC flow so Adobe Pass background-login completion in popup windows is
treated as a successful auth handoff, and expose explicit current-program metadata for NBC public
guide rows so the desktop channel list can render live program info directly.

The desktop app will:

- treat Adobe's `completeBackgroundLogin.html` popup landing as a native auth completion signal
- refocus and reload the main NBC player webview once that signal arrives so playback readiness can
  continue in the same in-app session
- reload the main NBC player webview once when it is already back on a fully loaded NBC watch
  surface but still has not materialized a video element
- persist the current live program as first-class guide metadata instead of relying only on the
  generic `number` field

## Motivation

The first native `WKWebView` pass gets the user into Verizon login, but the Adobe handoff can end
inside a short-lived popup instead of automatically returning control to the main player window.
Without explicit completion handling, the native flow appears to stall after successful login.

Separately, NBC public discovery already carries current-program titles, but the desktop list was
rendering only the generic `number` slot. That makes guide rows look incomplete even when the
metadata is already available.

## Scope

In scope:

- native popup completion handling for Adobe background login on macOS
- readiness-loop updates needed to continue playback after popup completion or an already-authenticated return to the main watch surface
- explicit current-program metadata and guide-row subtitle rendering for NBC discovery rows

Out of scope:

- a broader redesign of the channel list for all source types
- removal of the Chrome NBC fallback path
- changes to NBC entitlement semantics beyond surfacing existing discovery metadata

## Alternatives Considered

- Keep waiting on the main player page only. Rejected because Adobe can finish inside a popup and
  leave the main page idle.
- Continue storing NBC program info only in `StreamDescriptor.number`. Rejected because it obscures
  intent and makes guide rendering brittle.

## Rollout / Reversibility

- The auth-completion change is additive to the native macOS NBC path and falls back to Chrome if
  playback still does not become ready.
- The guide-label change is additive metadata plus UI presentation.
- Roll back by removing the popup completion hook and the explicit program-label rendering.
