Skip to content

Merge backstop sweep (POST)

POST
/cron/merge-backstop
curl --request POST \
--url 'https://example.com/api/cron/merge-backstop?dry_run=1&catch_up=1'

Scheduled hourly as the merge-backstop stage of the Slipstream hourly-sweeps schedule (scripts/cron-merge-backstop.sh, which pages on nextCursor). The pg_cron block in supabase/migrations/20260901000003_merge_backstop_hourly.sql is a lockstep no-op (extension not installed). Same parameters as GET.

dry_run
string
Allowed values: 1

Classify and report without writing any merge-close.

catch_up
string
Allowed values: 1

Widen the pass (200 tickets, 30 pushes per project, 7-day PR lookback) for a backlog drain.

before
string format: date-time

Keyset cursor — only tickets with updated_at strictly before this timestamp; take it from a previous response’s nextCursor.

Backstop run result

Media type application/json
object
ok
required
boolean
dryRun
required
boolean
catchUp
required
boolean
truncated
required

True when the ticket sweep stopped before every candidate was seen (full page or deadline).

boolean
nextCursor
required

Pass back as before to continue paging; null when nothing remains.

string | null
repair

RepairMergedRolesWhereMergedAtSet counters.

object
key
additional properties
any
sweep

SweepUnmergedTickets counters; null when that sweep threw.

object | null
prSweep

SweepRecentGithubPrs counters; null when that sweep threw.

object | null

Missing or invalid CRON_SECRET