Cron

Ticket lifecycle sweeps, dry run by default (GET)

The hourly ticket-lifecycle tick (HO-15546). Runs, in order and under one shared ~75s deadline: the closing-line close (a parked closing-line ticket closes once its deploy is recorded, or once its merge is on the default branch when its repo reports no deploys; never on elapsed time), the in-progress move-back (no agent for 48h returns the ticket to up next) and the 30-day archive (an untouched backlog or validation ticket is archived). Also trims the agent_notifications catch-up log to 14 days. DRY RUN BY DEFAULT: the sweeps only count and sample unless dry_run=0 is sent explicitly; any other value, or none, stays dry. Each sweep result carries scanned/acted/skipped/errors, a truncated flag and up to 25 sample ticket ids. A truncation is not a failure; top-level ok is the AND of the three sweeps (the retention sweep is best-effort and never affects it). One sweep throwing sets ok: false and does not stop the others. Protected by CRON_SECRET via the x-cron-secret header ONLY — a token query parameter is rejected (secrets do not belong in URLs).

get/cron/stale-in-progress

Request

  • Base URL: https://api.apphandoff.com/api
  • URL: https://api.apphandoff.com/api/cron/stale-in-progress
  • Auth: none required

Query parameters

dry_run'0' | '1'

Dry run is the DEFAULT. Only 0 runs the lifecycle sweeps for real; 1, an empty value, any other value and an absent parameter all count and sample without writing.

Response

Lifecycle sweep result

okboolean required

AND of the three sweeps' ok. The best-effort retention sweep never affects it.

dry_runboolean required

True unless the caller sent an explicit dry_run=0.

Changes

No recorded changes to this operation across all 1 revision of this API.