Skip to content

fix(server): settle threads using actual pull request terminal timestamps - #9934

Merged
maria-rcks merged 2 commits into
pingdotgg:mainfrom
maria-rcks:fix/pr-terminal-settlement-6417
Sep 6, 2026
Merged

maria-rcks merged 2 commits into
pingdotgg:mainfrom
maria-rcks:fix/pr-terminal-settlement-6417

fix(web): preserve terminal timestamps from full pull request details

0ff69ac
Select commit
Loading
Failed to load commit list.
MacroscopeApp / Macroscope - Effect Service Conventions succeeded Sep 5, 2026 in 2m 29s

All clear

All clear

Details

Note

Your check run agent prompt is: .macroscope/check-run-agents/effect-service-conventions.md
More information about how Check Run Agents work can be found in our Help Center.


🔍 Agent activity — 11 tool calls

💭 I'm scanning the changed non-test files for violations of Effect service conventions, focusing on GitManager, ThreadSettlementPolicy/Reactor, the pull request providers across Azure DevOps/Bitbucket/GitHub, and related source control contracts. Since most changes look like plumbing field additions, I want to specifically check azureDevOpsPullRequests.ts more closely.

1. browse_code — apps/server/src/sourceControl/azureDevOpsPullRequests.ts

2. browse_code — apps/server/src/sourceControl/gitHubPullRequests.ts

💭 These helpers look fine convention-wise. The Bitbucket change setting mergedAt and closedAt to null is more of a behavioral concern than an Effect service convention issue, though since the review scope includes requiring focused tests for backend behavior changes, this null change might still need to be flagged as a regression requiring test coverage.

3. browse_code — apps/server/src/orchestration/ThreadSettlementPolicy.ts

4. browse_code — apps/server/src/pullRequest/BitbucketPullRequestProvider.ts

💭 This is a behavior change rather than an Effect service convention issue, since Bitbucket's null closedAt/mergedAt is a semantics shift rather than a structural violation. I'm now scanning GitManager.ts, GitHubPullRequestCli.ts, and PullRequestService.ts for actual convention issues like standalone versus inline interface definitions. Looking at GitManager.ts specifically, the PullRequestInfo interface extending OpenPrInfo is pre-existing and fine, as is the inline object type returned by branchPullRequest. I want to double check the section around lines 2130-2180 for any remaining behavior or type issues.

5. browse_code — apps/server/src/git/GitManager.ts

6. browse_code — apps/server/src/git/GitManager.ts

💭 No convention violations so far—checking GitHubPullRequestCli.ts and PullRequestService.ts next, while the .tsx web component file falls outside scope since the include pattern only matches *.ts. The contracts package changes adding optional nullable string schemas are in scope though. The git.ts edit is just a doc comment change, so I'll focus on reviewing PullRequestService.ts around lines 1250-1270 and 2310-2330.

7. browse_code — apps/server/src/pullRequest/PullRequestService.ts

8. browse_code — apps/server/src/pullRequest/PullRequestService.ts

💭 No convention violations there. Now I'm looking at the changes in GitHubPullRequestCli.ts around lines 465-480 and 1650-1665.

9. browse_code — apps/server/src/pullRequest/GitHubPullRequestCli.ts

10. browse_code — apps/server/src/pullRequest/GitHubPullRequestCli.ts

💭 I'm checking that the single-PR fetch path includes closedAt in its requested fields, and confirming the summary interface marks it as an optional nullable string. Now I'm turning to look at what was added in GitLabCli.ts. Not sure the mapping actually propagates closedAt/mergedAt from the normalized record into the summary interface, though the tests presumably confirm it works. Beyond this, I want to see if there are any real Effect service convention violations elsewhere, so I'm going to look at ThreadSettlementReactor.ts around lines 100-150.

11. browse_code — apps/server/src/orchestration/ThreadSettlementReactor.ts

💭 I don't see obvious convention violations in the merged state return or the contract schema additions—those look like straightforward extensions. The only thing worth flagging is a type import in the reactor file that's scoped locally, but nothing that breaks stated conventions. Since there are no findings, I need to report back with a clean result. I'll set the completion status as success with title and summary both reading "All clear," and leave the details empty since nothing needs elaboration.


Agent Credits: 56 credits

Token usage: 14 uncached input · 228,255 cache-read input · 50,481 cache-write input · 3,921 output
Agent Credits may also include non-token charges from external tools such as web research.