job.autoMerge was persisted but ignored — PR merging fired only when the host set FLEET_SHIP_MERGES_PR=1, and a failed merge was silent (PR left open, no signal). Now: - mergeRunPrOnShip merges when EITHER the job opted in (job.autoMerge) OR the global flag is set (new pure, unit-tested shouldMergePrOnShip gate). Existing global-flag behavior is preserved. - Merge outcomes are surfaced as job events: pr_merged on success (inline or via background retry) and pr_merge_failed when the inline attempt + 4 background retries all fail, so a stuck PR shows on the timeline instead of vanishing. Still fully best-effort and gated (no merge attempted unless opted in), so the real-world side effect only happens when explicitly requested. Generated with [Devin](https://cli.devin.ai/docs) Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com> |
||
|---|---|---|
| .. | ||
| cowork-service | ||
| extraction-service | ||
| mcp-server | ||
| monitoring | ||
| platform-service | ||