Skip to content

Draft owed milestone summaries across every project (every 10 minutes)

POST
/cron/milestone-summaries
curl --request POST \
--url https://example.com/api/cron/milestone-summaries

HO-15533. Picks milestones whose summary_stale_at is older than 60 s, not done or dropped, not merged, not a failure younger than 30 minutes and not under a live draft lease, oldest stamp first, at most 5 per project and 40 per run, and runs the same summary refresh as the on-read scheduler, 3 at a time. Each refresh takes the row’s draft lease (summary_draft_claimed_at, 2 minutes) before any model call, so another machine, an overlapping run or a board read never pays twice for one draft. No refresh starts after 30 s; the run stops after 5 consecutive model failures. ok is false only when the pick read fails. Protected by CRON_SECRET via the x-cron-secret header. Scheduled by the milestone-summaries stage of the embedding-drain schedule in .slipstream.json.

Run result

Media type application/json
object
ok
required
boolean
picked
required
integer
written
required
integer
cleared
required
integer
unchanged
required
integer
rejected
required
integer
failed
required
integer
skipped
required
integer
leased_elsewhere
required
integer
stopped
required
string
Allowed values: drained budget model_failures
window_full
required
boolean
duration_ms
required
integer
error
string

Missing or invalid CRON_SECRET