A PR merged in the GitHub UI was invisible to the platform — prState only flipped to `merged` when the platform merged it (ghMergePr on ship) or a runner reported it, so the job details page kept showing the PR as open. This adds a simple, pull-based reconcile (no inbound webhook / public ingress needed). - coordinator.reconcileJobPrState(jobId, productId, fetcher?): finds the latest run carrying a prUrl and, when `gh pr view --json state` reports MERGED, flips the run's prState to `merged` and appends a `pr_merged` event (data.via: 'reconcile'). The GitHub lookup is injectable for tests; pure `mapGhPrState` maps MERGED/OPEN/other. Best-effort: any gh failure is a no-op. - POST /fleet/jobs/:id/pr/reconcile route; echoes the outcome to the tracker Item when a merge is detected. - tracker-web: reconcilePrState() client + a "Refresh PR status" button on the job details PR section (shown until the PR is merged) that reconciles then refreshes the view. Tests: +5 (mapGhPrState, reconcile merged/open/no_pr/not_found, route wiring); full suite 1861 green; lint + tsc clean (service + tracker-web). Deployed: rebuilt the docker platform-service; POST .../pr/reconcile returns 401 (wired), not 404. 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 | ||