Skip to content

Surface pending-merge deferrals in channel-pipeline dry runs #1018

Description

@MotWakorb

User value

Operators need preview results to predict whether a live M3U-refresh run will create a channel or defer it behind Pending Merges. Today dry run bypasses the pending-merge decision, so preview can promise creation while the live run defers the same stream.

Follow-up to #1015 and PR #1016. This issue owns only dry-run visibility; queue expiry, sticky dismissal, and the airing-matcher fixes remain outside its scope.

Required behavior

  • Dry-run channel-pipeline results surface when a stream would be deferred by an existing pending-merge row.
  • Preview remains mutation-free: it must not insert, update, dismiss, or resolve pending-merge rows.
  • Results identify the blocking row IDs and use the same stream/action/row units as live-run reporting.
  • Preview and live execution agree on create-versus-defer for the same persisted queue state.
  • Operator-facing wording clearly marks the outcome as predicted rather than applied.

Acceptance criteria

  1. A dry run with an existing matching pending row predicts deferral, reports the authoritative row ID, and does not predict channel creation.
  2. Fresh and collision/reuse queue states produce consistent predicted results without database mutation.
  3. A dry run with no blocking pending row preserves the current create prediction.
  4. Retained integration coverage crosses persisted PendingMerge state through executor, engine, and preview response.
  5. Tests assert the pending-merge table is byte-for-byte or semantically unchanged after preview.
  6. User-facing documentation describes the preview behavior and its mutation-free guarantee.

Success signal

For identical rules, streams, channels, and pending-merge rows, preview and the subsequent live run report the same create-versus-defer decision, while preview leaves queue state unchanged.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions