Live Functional Parity

Prev Next

Content -> Live Functional Parity Checklist

Functional parity tracker for old ViewliftTools-v2 live flows against cms-v5.

This checklist tracks flow and behavior parity, not transport implementation details.
Old REST behavior is intentionally re-expressed through cms-v5 GraphQL-first service boundaries.

Baseline Sources

  • ViewliftTools-v2/src/components/Content/LiveStreams.jsx
  • ViewliftTools-v2/src/hooks/Content/useContentSettings.js
  • ViewliftTools-v2/src/components/Content/Modals/LiveArchiveVersions.jsx
  • ViewliftTools-v2/src/components/Content/Modals/LowLatencyLive.jsx
  • ViewliftTools-v2/src/components/Content/ContentEditHeader.jsx

Status Legend

  • MATCH -> behavior implemented and reachable in active cms-v5 path
  • PARTIAL -> behavior exists but with material gaps
  • MISSING -> behavior not yet implemented
  • INTENTIONAL_CHANGE -> approved UX/architecture modernization

Parity Matrix

ID Behavior Status Notes / Evidence
LS-001 Live control surface shown on live detail MATCH src/modules/content/details/sections/live-stream/tabs/index.tsx
LS-002 Primary/secondary input URL rendering + labels MATCH src/modules/content/details/sections/live-stream/tabs/stream/inputs/index.tsx
LS-003 Stream ID visibility with input rows MATCH src/modules/content/details/sections/live-stream/tabs/stream/inputs/index.tsx
LS-004 URL copy affordance per row MATCH src/modules/content/details/sections/live-stream/tabs/stream/inputs/index.tsx
LS-005 Egress endpoint copy action MATCH src/modules/content/details/sections/live-stream/tabs/stream/inputs/index.tsx
LS-006 Harmonic input Start/Stop per row INTENTIONAL_CHANGE per-row Start/Stop control removed from the stream tab; ContentLiveStreamService.updateInputState remains available but is no longer surfaced in the UI
LS-007 Harmonic connect -> discover -> poll -> audio select -> update MATCH useLiveAudioGrooming + StreamTab orchestrator
LS-008 Row-level connect/update failure recoverability UX MATCH Stream connect failures now converge to Retry Connect with stale discovery context reset and cross-row connect mutex; update failures retain Retry Update + toast coverage
LS-009 Start live CTA wiring MATCH src/modules/content/details/sections/live-stream/tabs/index.tsx
LS-010 Stop live CTA wiring MATCH src/modules/content/details/sections/live-stream/tabs/index.tsx
LS-011 Publish-before-start gate MATCH start action blocked when workflow is not publish in control-surface actions
LS-012 Scheduled/processing start-stop gating parity MATCH scheduled status now disables start CTA; processing status remains guarded
LS-013 Workflow status/error surface in channel card MATCH uiFlags.liveWorkflowStatus/liveWorkflowMessage
LS-014 CloudFront progress indicator MATCH uiFlags.cloudfrontProgress + control surface banner
LS-015 Media alerts visibility on detail MATCH stream-monitoring tab
LS-016 Media alerts auto-poll lifecycle MATCH detail orchestrator owns processing/status/media-alert poll lifecycle, including v2 terminal/stable status-poll stop rules (FINISHED, IDLE, RUNNING/Harmonic live, DELETED, FAILED)
LS-017 Choose Archive modal visibility from live state MATCH LiveArchiveChooser wired through runtime flags
LS-018 Archive Convert -> new VOD flow MATCH chooser convert now creates VOD and routes to new content
LS-019 Archive Clip -> VOD flow INTENTIONAL_CHANGE deferred in this pass per explicit product decision; clip CTA remains non-destructive
LS-020 Archive preview/download row actions MATCH chooser now routes preview/download through tokenization (tokenization.tokenizedUrl), supports multi-URL rows, filters tokenized playback paths, and uses in-app tokenized preview modal
LS-021 Third-party live create submission MATCH third-party form + submit wiring restored with payload validation
LS-022 Internal live create (AWS/Harmonic) MATCH useLiveCreate with provider-specific payload builders/services
LS-023 GCP provider parity INTENTIONAL_CHANGE out of scope for this pass
LS-024 Legacy split tab modules removed from active surface MATCH non-registry legacy split tab modules removed from codebase

Priority Closure Order

  1. LS-019 (clip flow only if deferred decision is revisited)

Signoff Rule

Parity signoff requires:

  • all P0 IDs above moved to MATCH, and
  • no active user flow retaining MISSING for operator-critical live actions.

Signoff Evidence (Current Pass)

  • Unit/integration verification:
    • src/__tests__/lib/internal/LiveStreamRuntime/uiFlags.test.ts
    • src/__tests__/modules/content/details/sections/live-stream/tabs/index.test.tsx
    • src/__tests__/modules/content/details/sections/live-stream/actions/archive-chooser.test.tsx
    • src/__tests__/modules/content/details/sections/live-stream/tabs/stream-inputs/index.test.tsx
    • src/__tests__/modules/content/details/sections/live-stream/tabs/stream/index.test.tsx
    • src/__tests__/modules/content/details/sections/live-stream/tabs/audio-grooming/index.test.tsx
    • src/__tests__/hooks/content/useLiveAudioGrooming.test.ts
    • src/__tests__/hooks/content/useLiveArchiveActions.test.ts
    • src/__tests__/adapters/content/liveArchiveUrls.adapter.test.ts
    • src/__tests__/services/content/TokenizationService.test.ts
    • src/__tests__/hooks/content/useLiveCreate.test.ts
    • src/__tests__/adapters/content/liveArchiveToVodPayload.adapter.test.ts
  • E2E smoke entrypoint added:
    • cypress/e2e/content/smoke.cy.ts
  • Residual risk:
    • LS-019 is intentionally deferred for this pass by explicit decision