fix(server): settle branch threads immediately on pull request merge - #9528

Merged
maria-rcks merged 4 commits into
pingdotgg:mainfrom
maria-rcks:t3code/fix-thread-pr-merge-settling
Sep 4, 2026
Merged

fix(server): settle branch threads immediately on pull request merge#9528
maria-rcks merged 4 commits into
pingdotgg:mainfrom
maria-rcks:t3code/fix-thread-pr-merge-settling

Conversation

@maria-rcks

@maria-rcksmaria-rcks commented Sep 4, 2026

Copy link
Copy Markdown
Collaborator

Merging from the in-app pull request viewer left branch threads active for minutes: the merge fast-path only swept explicitly linked threads, so everything else waited for the next minute's sweep on a branch lookup that can stay cached as open for two minutes.

The merge event now re-sweeps every auto-settlement candidate and drops the swept checkouts' cached git answers first, so a merge settles its branch threads in seconds. Threads linked to the merged pull request still settle from the event itself without a lookup.

Verified with the reactor suite (10 tests, including a new regression test that fails on the old code) plus the settlement policy suite (12 tests), and a clean typecheck for the touched files. Built with Muse Spark on OpenCode.


Note

Medium Risk
Changes merge settlement scope and linked-PR matching (exact repo/number), plus shorter PR lookup caching, which affects orchestration timing and API load under settlement sweeps.

Overview
Merging a PR in-app no longer leaves branch-only threads active for minutes. A merge-triggered settlement sweep now considers every auto-settlement candidate (not only threads with an explicit PR link), and it calls GitManager.invalidateStatus on each branch lookup checkout first so cached “open” branch PR state cannot block settlement.

Threads that are linked to the merged PR still settle from the merge event without a lookup; linked threads for other PRs keep using a normal summary lookup instead of inheriting the merge. PR_LOOKUP_CACHE_TTL drops from two minutes to 60 seconds so periodic sweeps see fresher branch PR state without waiting out a longer cache.

Tests cover immediate branch-thread settlement on merge, cache invalidation, and that an unrelated merge does not settle other linked threads.

Reviewed by Cursor Bugbot for commit 85d76cc. Bugbot is set up for automated code reviews on this repo. Configure here.

Note

Settle branch threads immediately on pull request merge in ThreadSettlementReactor

  • Merge-event sweeps now include all auto-settlement candidates instead of only threads linked to the event's pull request, and invalidate cached branch status for eligible unlinked threads before lookup
  • pullRequestFor now compares project, repository, and pull-request number exactly, so only the thread linked to the exact merged PR gets merged state; unrelated linked threads continue through normal lookup
  • Reduces PR_LOOKUP_CACHE_TTL from 2 minutes to 60 seconds so the settlement sweep observes merge state sooner
  • Risk: sweep now processes all eligible threads on every merge event and invalidates up to eight working directories concurrently, which may increase load during merge bursts; check ThreadSettlementReactor.ts for concurrency limits

Macroscope summarized 85d76cc.

@github-actionsgithub-actionsBot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:S 10-29 changed lines (additions + deletions). labels Sep 4, 2026
Comment threadapps/server/src/orchestration/ThreadSettlementReactor.ts

@cursorcursorBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes using default effort and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit f2e2c4c. Configure here.

Comment threadapps/server/src/orchestration/ThreadSettlementReactor.ts
@macroscopeapp

macroscopeappBot commented Sep 4, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Approved at 85d76cc

Macroscope's review found this PR approvable — This is a focused server-side bug fix that refreshes cached branch state on merge and settles only eligible threads, with regression tests for immediate settlement and unrelated pull requests. Its additional lookup work is confined to the settlement path and concurrency-bounded.

You can add or adjust custom eligibility rules. Learn more.

@github-actionsgithub-actionsBot added size:M 30-99 changed lines (additions + deletions). and removed size:S 10-29 changed lines (additions + deletions). labels Sep 4, 2026
macroscopeapp[bot]
macroscopeappBot previously approved these changes Sep 4, 2026
@macroscopeapp
macroscopeappBot dismissed their stale reviewSeptember 4, 2026 01:03

Dismissing prior approval to re-evaluate 85d76cc

@maria-rcks
maria-rcks merged commit 2b96220 into pingdotgg:mainSep 4, 2026
25 checks passed
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:M30-99 changed lines (additions + deletions).vouch:trustedPR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@maria-rcks
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

fix(server): settle branch threads immediately on pull request merge - #9528

Merged
maria-rcks merged 4 commits into
pingdotgg:mainfrom
maria-rcks:t3code/fix-thread-pr-merge-settling
Sep 4, 2026
Merged

fix(server): settle branch threads immediately on pull request merge#9528
maria-rcks merged 4 commits into
pingdotgg:mainfrom
maria-rcks:t3code/fix-thread-pr-merge-settling

Conversation

@maria-rcks

@maria-rcksmaria-rcks commented Sep 4, 2026

Copy link
Copy Markdown
Collaborator

Merging from the in-app pull request viewer left branch threads active for minutes: the merge fast-path only swept explicitly linked threads, so everything else waited for the next minute's sweep on a branch lookup that can stay cached as open for two minutes.

The merge event now re-sweeps every auto-settlement candidate and drops the swept checkouts' cached git answers first, so a merge settles its branch threads in seconds. Threads linked to the merged pull request still settle from the event itself without a lookup.

Verified with the reactor suite (10 tests, including a new regression test that fails on the old code) plus the settlement policy suite (12 tests), and a clean typecheck for the touched files. Built with Muse Spark on OpenCode.


Note

Medium Risk
Changes merge settlement scope and linked-PR matching (exact repo/number), plus shorter PR lookup caching, which affects orchestration timing and API load under settlement sweeps.

Overview
Merging a PR in-app no longer leaves branch-only threads active for minutes. A merge-triggered settlement sweep now considers every auto-settlement candidate (not only threads with an explicit PR link), and it calls GitManager.invalidateStatus on each branch lookup checkout first so cached “open” branch PR state cannot block settlement.

Threads that are linked to the merged PR still settle from the merge event without a lookup; linked threads for other PRs keep using a normal summary lookup instead of inheriting the merge. PR_LOOKUP_CACHE_TTL drops from two minutes to 60 seconds so periodic sweeps see fresher branch PR state without waiting out a longer cache.

Tests cover immediate branch-thread settlement on merge, cache invalidation, and that an unrelated merge does not settle other linked threads.

Reviewed by Cursor Bugbot for commit 85d76cc. Bugbot is set up for automated code reviews on this repo. Configure here.

Note

Settle branch threads immediately on pull request merge in ThreadSettlementReactor

  • Merge-event sweeps now include all auto-settlement candidates instead of only threads linked to the event's pull request, and invalidate cached branch status for eligible unlinked threads before lookup
  • pullRequestFor now compares project, repository, and pull-request number exactly, so only the thread linked to the exact merged PR gets merged state; unrelated linked threads continue through normal lookup
  • Reduces PR_LOOKUP_CACHE_TTL from 2 minutes to 60 seconds so the settlement sweep observes merge state sooner
  • Risk: sweep now processes all eligible threads on every merge event and invalidates up to eight working directories concurrently, which may increase load during merge bursts; check ThreadSettlementReactor.ts for concurrency limits

Macroscope summarized 85d76cc.

@github-actionsgithub-actionsBot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:S 10-29 changed lines (additions + deletions). labels Sep 4, 2026
Comment threadapps/server/src/orchestration/ThreadSettlementReactor.ts

@cursorcursorBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes using default effort and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit f2e2c4c. Configure here.

Comment threadapps/server/src/orchestration/ThreadSettlementReactor.ts
@macroscopeapp

macroscopeappBot commented Sep 4, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Approved at 85d76cc

Macroscope's review found this PR approvable — This is a focused server-side bug fix that refreshes cached branch state on merge and settles only eligible threads, with regression tests for immediate settlement and unrelated pull requests. Its additional lookup work is confined to the settlement path and concurrency-bounded.

You can add or adjust custom eligibility rules. Learn more.

@github-actionsgithub-actionsBot added size:M 30-99 changed lines (additions + deletions). and removed size:S 10-29 changed lines (additions + deletions). labels Sep 4, 2026
macroscopeapp[bot]
macroscopeappBot previously approved these changes Sep 4, 2026
@macroscopeapp
macroscopeappBot dismissed their stale reviewSeptember 4, 2026 01:03

Dismissing prior approval to re-evaluate 85d76cc

@maria-rcks
maria-rcks merged commit 2b96220 into pingdotgg:mainSep 4, 2026
25 checks passed
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:M30-99 changed lines (additions + deletions).vouch:trustedPR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@maria-rcks
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

fix(server): settle branch threads immediately on pull request merge - #9528

Merged
maria-rcks merged 4 commits into
pingdotgg:mainfrom
maria-rcks:t3code/fix-thread-pr-merge-settling
Sep 4, 2026
Merged

fix(server): settle branch threads immediately on pull request merge#9528
maria-rcks merged 4 commits into
pingdotgg:mainfrom
maria-rcks:t3code/fix-thread-pr-merge-settling

Conversation

@maria-rcks

@maria-rcksmaria-rcks commented Sep 4, 2026

Copy link
Copy Markdown
Collaborator

Merging from the in-app pull request viewer left branch threads active for minutes: the merge fast-path only swept explicitly linked threads, so everything else waited for the next minute's sweep on a branch lookup that can stay cached as open for two minutes.

The merge event now re-sweeps every auto-settlement candidate and drops the swept checkouts' cached git answers first, so a merge settles its branch threads in seconds. Threads linked to the merged pull request still settle from the event itself without a lookup.

Verified with the reactor suite (10 tests, including a new regression test that fails on the old code) plus the settlement policy suite (12 tests), and a clean typecheck for the touched files. Built with Muse Spark on OpenCode.


Note

Medium Risk
Changes merge settlement scope and linked-PR matching (exact repo/number), plus shorter PR lookup caching, which affects orchestration timing and API load under settlement sweeps.

Overview
Merging a PR in-app no longer leaves branch-only threads active for minutes. A merge-triggered settlement sweep now considers every auto-settlement candidate (not only threads with an explicit PR link), and it calls GitManager.invalidateStatus on each branch lookup checkout first so cached “open” branch PR state cannot block settlement.

Threads that are linked to the merged PR still settle from the merge event without a lookup; linked threads for other PRs keep using a normal summary lookup instead of inheriting the merge. PR_LOOKUP_CACHE_TTL drops from two minutes to 60 seconds so periodic sweeps see fresher branch PR state without waiting out a longer cache.

Tests cover immediate branch-thread settlement on merge, cache invalidation, and that an unrelated merge does not settle other linked threads.

Reviewed by Cursor Bugbot for commit 85d76cc. Bugbot is set up for automated code reviews on this repo. Configure here.

Note

Settle branch threads immediately on pull request merge in ThreadSettlementReactor

  • Merge-event sweeps now include all auto-settlement candidates instead of only threads linked to the event's pull request, and invalidate cached branch status for eligible unlinked threads before lookup
  • pullRequestFor now compares project, repository, and pull-request number exactly, so only the thread linked to the exact merged PR gets merged state; unrelated linked threads continue through normal lookup
  • Reduces PR_LOOKUP_CACHE_TTL from 2 minutes to 60 seconds so the settlement sweep observes merge state sooner
  • Risk: sweep now processes all eligible threads on every merge event and invalidates up to eight working directories concurrently, which may increase load during merge bursts; check ThreadSettlementReactor.ts for concurrency limits

Macroscope summarized 85d76cc.

@github-actionsgithub-actionsBot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:S 10-29 changed lines (additions + deletions). labels Sep 4, 2026
Comment threadapps/server/src/orchestration/ThreadSettlementReactor.ts

@cursorcursorBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes using default effort and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit f2e2c4c. Configure here.

Comment threadapps/server/src/orchestration/ThreadSettlementReactor.ts
@macroscopeapp

macroscopeappBot commented Sep 4, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Approved at 85d76cc

Macroscope's review found this PR approvable — This is a focused server-side bug fix that refreshes cached branch state on merge and settles only eligible threads, with regression tests for immediate settlement and unrelated pull requests. Its additional lookup work is confined to the settlement path and concurrency-bounded.

You can add or adjust custom eligibility rules. Learn more.

@github-actionsgithub-actionsBot added size:M 30-99 changed lines (additions + deletions). and removed size:S 10-29 changed lines (additions + deletions). labels Sep 4, 2026
macroscopeapp[bot]
macroscopeappBot previously approved these changes Sep 4, 2026
@macroscopeapp
macroscopeappBot dismissed their stale reviewSeptember 4, 2026 01:03

Dismissing prior approval to re-evaluate 85d76cc

@maria-rcks
maria-rcks merged commit 2b96220 into pingdotgg:mainSep 4, 2026
25 checks passed
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:M30-99 changed lines (additions + deletions).vouch:trustedPR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@maria-rcks
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

fix(server): settle branch threads immediately on pull request merge - #9528

Merged
maria-rcks merged 4 commits into
pingdotgg:mainfrom
maria-rcks:t3code/fix-thread-pr-merge-settling
Sep 4, 2026
Merged

fix(server): settle branch threads immediately on pull request merge#9528
maria-rcks merged 4 commits into
pingdotgg:mainfrom
maria-rcks:t3code/fix-thread-pr-merge-settling

Conversation

@maria-rcks

@maria-rcksmaria-rcks commented Sep 4, 2026

Copy link
Copy Markdown
Collaborator

Merging from the in-app pull request viewer left branch threads active for minutes: the merge fast-path only swept explicitly linked threads, so everything else waited for the next minute's sweep on a branch lookup that can stay cached as open for two minutes.

The merge event now re-sweeps every auto-settlement candidate and drops the swept checkouts' cached git answers first, so a merge settles its branch threads in seconds. Threads linked to the merged pull request still settle from the event itself without a lookup.

Verified with the reactor suite (10 tests, including a new regression test that fails on the old code) plus the settlement policy suite (12 tests), and a clean typecheck for the touched files. Built with Muse Spark on OpenCode.


Note

Medium Risk
Changes merge settlement scope and linked-PR matching (exact repo/number), plus shorter PR lookup caching, which affects orchestration timing and API load under settlement sweeps.

Overview
Merging a PR in-app no longer leaves branch-only threads active for minutes. A merge-triggered settlement sweep now considers every auto-settlement candidate (not only threads with an explicit PR link), and it calls GitManager.invalidateStatus on each branch lookup checkout first so cached “open” branch PR state cannot block settlement.

Threads that are linked to the merged PR still settle from the merge event without a lookup; linked threads for other PRs keep using a normal summary lookup instead of inheriting the merge. PR_LOOKUP_CACHE_TTL drops from two minutes to 60 seconds so periodic sweeps see fresher branch PR state without waiting out a longer cache.

Tests cover immediate branch-thread settlement on merge, cache invalidation, and that an unrelated merge does not settle other linked threads.

Reviewed by Cursor Bugbot for commit 85d76cc. Bugbot is set up for automated code reviews on this repo. Configure here.

Note

Settle branch threads immediately on pull request merge in ThreadSettlementReactor

  • Merge-event sweeps now include all auto-settlement candidates instead of only threads linked to the event's pull request, and invalidate cached branch status for eligible unlinked threads before lookup
  • pullRequestFor now compares project, repository, and pull-request number exactly, so only the thread linked to the exact merged PR gets merged state; unrelated linked threads continue through normal lookup
  • Reduces PR_LOOKUP_CACHE_TTL from 2 minutes to 60 seconds so the settlement sweep observes merge state sooner
  • Risk: sweep now processes all eligible threads on every merge event and invalidates up to eight working directories concurrently, which may increase load during merge bursts; check ThreadSettlementReactor.ts for concurrency limits

Macroscope summarized 85d76cc.

@github-actionsgithub-actionsBot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:S 10-29 changed lines (additions + deletions). labels Sep 4, 2026
Comment threadapps/server/src/orchestration/ThreadSettlementReactor.ts

@cursorcursorBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes using default effort and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit f2e2c4c. Configure here.

Comment threadapps/server/src/orchestration/ThreadSettlementReactor.ts
@macroscopeapp

macroscopeappBot commented Sep 4, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Approved at 85d76cc

Macroscope's review found this PR approvable — This is a focused server-side bug fix that refreshes cached branch state on merge and settles only eligible threads, with regression tests for immediate settlement and unrelated pull requests. Its additional lookup work is confined to the settlement path and concurrency-bounded.

You can add or adjust custom eligibility rules. Learn more.

@github-actionsgithub-actionsBot added size:M 30-99 changed lines (additions + deletions). and removed size:S 10-29 changed lines (additions + deletions). labels Sep 4, 2026
macroscopeapp[bot]
macroscopeappBot previously approved these changes Sep 4, 2026
@macroscopeapp
macroscopeappBot dismissed their stale reviewSeptember 4, 2026 01:03

Dismissing prior approval to re-evaluate 85d76cc

@maria-rcks
maria-rcks merged commit 2b96220 into pingdotgg:mainSep 4, 2026
25 checks passed
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:M30-99 changed lines (additions + deletions).vouch:trustedPR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@maria-rcks
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

fix(server): settle branch threads immediately on pull request merge - #9528

Merged
maria-rcks merged 4 commits into
pingdotgg:mainfrom
maria-rcks:t3code/fix-thread-pr-merge-settling
Sep 4, 2026
Merged

fix(server): settle branch threads immediately on pull request merge#9528
maria-rcks merged 4 commits into
pingdotgg:mainfrom
maria-rcks:t3code/fix-thread-pr-merge-settling

Conversation

@maria-rcks

@maria-rcksmaria-rcks commented Sep 4, 2026

Copy link
Copy Markdown
Collaborator

Merging from the in-app pull request viewer left branch threads active for minutes: the merge fast-path only swept explicitly linked threads, so everything else waited for the next minute's sweep on a branch lookup that can stay cached as open for two minutes.

The merge event now re-sweeps every auto-settlement candidate and drops the swept checkouts' cached git answers first, so a merge settles its branch threads in seconds. Threads linked to the merged pull request still settle from the event itself without a lookup.

Verified with the reactor suite (10 tests, including a new regression test that fails on the old code) plus the settlement policy suite (12 tests), and a clean typecheck for the touched files. Built with Muse Spark on OpenCode.


Note

Medium Risk
Changes merge settlement scope and linked-PR matching (exact repo/number), plus shorter PR lookup caching, which affects orchestration timing and API load under settlement sweeps.

Overview
Merging a PR in-app no longer leaves branch-only threads active for minutes. A merge-triggered settlement sweep now considers every auto-settlement candidate (not only threads with an explicit PR link), and it calls GitManager.invalidateStatus on each branch lookup checkout first so cached “open” branch PR state cannot block settlement.

Threads that are linked to the merged PR still settle from the merge event without a lookup; linked threads for other PRs keep using a normal summary lookup instead of inheriting the merge. PR_LOOKUP_CACHE_TTL drops from two minutes to 60 seconds so periodic sweeps see fresher branch PR state without waiting out a longer cache.

Tests cover immediate branch-thread settlement on merge, cache invalidation, and that an unrelated merge does not settle other linked threads.

Reviewed by Cursor Bugbot for commit 85d76cc. Bugbot is set up for automated code reviews on this repo. Configure here.

Note

Settle branch threads immediately on pull request merge in ThreadSettlementReactor

  • Merge-event sweeps now include all auto-settlement candidates instead of only threads linked to the event's pull request, and invalidate cached branch status for eligible unlinked threads before lookup
  • pullRequestFor now compares project, repository, and pull-request number exactly, so only the thread linked to the exact merged PR gets merged state; unrelated linked threads continue through normal lookup
  • Reduces PR_LOOKUP_CACHE_TTL from 2 minutes to 60 seconds so the settlement sweep observes merge state sooner
  • Risk: sweep now processes all eligible threads on every merge event and invalidates up to eight working directories concurrently, which may increase load during merge bursts; check ThreadSettlementReactor.ts for concurrency limits

Macroscope summarized 85d76cc.

@github-actionsgithub-actionsBot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:S 10-29 changed lines (additions + deletions). labels Sep 4, 2026
Comment threadapps/server/src/orchestration/ThreadSettlementReactor.ts

@cursorcursorBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes using default effort and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit f2e2c4c. Configure here.

Comment threadapps/server/src/orchestration/ThreadSettlementReactor.ts
@macroscopeapp

macroscopeappBot commented Sep 4, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Approved at 85d76cc

Macroscope's review found this PR approvable — This is a focused server-side bug fix that refreshes cached branch state on merge and settles only eligible threads, with regression tests for immediate settlement and unrelated pull requests. Its additional lookup work is confined to the settlement path and concurrency-bounded.

You can add or adjust custom eligibility rules. Learn more.

@github-actionsgithub-actionsBot added size:M 30-99 changed lines (additions + deletions). and removed size:S 10-29 changed lines (additions + deletions). labels Sep 4, 2026
macroscopeapp[bot]
macroscopeappBot previously approved these changes Sep 4, 2026
@macroscopeapp
macroscopeappBot dismissed their stale reviewSeptember 4, 2026 01:03

Dismissing prior approval to re-evaluate 85d76cc

@maria-rcks
maria-rcks merged commit 2b96220 into pingdotgg:mainSep 4, 2026
25 checks passed
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:M30-99 changed lines (additions + deletions).vouch:trustedPR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@maria-rcks
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

fix(server): settle branch threads immediately on pull request merge - #9528

Merged
maria-rcks merged 4 commits into
pingdotgg:mainfrom
maria-rcks:t3code/fix-thread-pr-merge-settling
Sep 4, 2026
Merged

fix(server): settle branch threads immediately on pull request merge#9528
maria-rcks merged 4 commits into
pingdotgg:mainfrom
maria-rcks:t3code/fix-thread-pr-merge-settling

Conversation

@maria-rcks

@maria-rcksmaria-rcks commented Sep 4, 2026

Copy link
Copy Markdown
Collaborator

Merging from the in-app pull request viewer left branch threads active for minutes: the merge fast-path only swept explicitly linked threads, so everything else waited for the next minute's sweep on a branch lookup that can stay cached as open for two minutes.

The merge event now re-sweeps every auto-settlement candidate and drops the swept checkouts' cached git answers first, so a merge settles its branch threads in seconds. Threads linked to the merged pull request still settle from the event itself without a lookup.

Verified with the reactor suite (10 tests, including a new regression test that fails on the old code) plus the settlement policy suite (12 tests), and a clean typecheck for the touched files. Built with Muse Spark on OpenCode.


Note

Medium Risk
Changes merge settlement scope and linked-PR matching (exact repo/number), plus shorter PR lookup caching, which affects orchestration timing and API load under settlement sweeps.

Overview
Merging a PR in-app no longer leaves branch-only threads active for minutes. A merge-triggered settlement sweep now considers every auto-settlement candidate (not only threads with an explicit PR link), and it calls GitManager.invalidateStatus on each branch lookup checkout first so cached “open” branch PR state cannot block settlement.

Threads that are linked to the merged PR still settle from the merge event without a lookup; linked threads for other PRs keep using a normal summary lookup instead of inheriting the merge. PR_LOOKUP_CACHE_TTL drops from two minutes to 60 seconds so periodic sweeps see fresher branch PR state without waiting out a longer cache.

Tests cover immediate branch-thread settlement on merge, cache invalidation, and that an unrelated merge does not settle other linked threads.

Reviewed by Cursor Bugbot for commit 85d76cc. Bugbot is set up for automated code reviews on this repo. Configure here.

Note

Settle branch threads immediately on pull request merge in ThreadSettlementReactor

  • Merge-event sweeps now include all auto-settlement candidates instead of only threads linked to the event's pull request, and invalidate cached branch status for eligible unlinked threads before lookup
  • pullRequestFor now compares project, repository, and pull-request number exactly, so only the thread linked to the exact merged PR gets merged state; unrelated linked threads continue through normal lookup
  • Reduces PR_LOOKUP_CACHE_TTL from 2 minutes to 60 seconds so the settlement sweep observes merge state sooner
  • Risk: sweep now processes all eligible threads on every merge event and invalidates up to eight working directories concurrently, which may increase load during merge bursts; check ThreadSettlementReactor.ts for concurrency limits

Macroscope summarized 85d76cc.

@github-actionsgithub-actionsBot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:S 10-29 changed lines (additions + deletions). labels Sep 4, 2026
Comment threadapps/server/src/orchestration/ThreadSettlementReactor.ts

@cursorcursorBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes using default effort and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit f2e2c4c. Configure here.

Comment threadapps/server/src/orchestration/ThreadSettlementReactor.ts
@macroscopeapp

macroscopeappBot commented Sep 4, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Approved at 85d76cc

Macroscope's review found this PR approvable — This is a focused server-side bug fix that refreshes cached branch state on merge and settles only eligible threads, with regression tests for immediate settlement and unrelated pull requests. Its additional lookup work is confined to the settlement path and concurrency-bounded.

You can add or adjust custom eligibility rules. Learn more.

@github-actionsgithub-actionsBot added size:M 30-99 changed lines (additions + deletions). and removed size:S 10-29 changed lines (additions + deletions). labels Sep 4, 2026
macroscopeapp[bot]
macroscopeappBot previously approved these changes Sep 4, 2026
@macroscopeapp
macroscopeappBot dismissed their stale reviewSeptember 4, 2026 01:03

Dismissing prior approval to re-evaluate 85d76cc

@maria-rcks
maria-rcks merged commit 2b96220 into pingdotgg:mainSep 4, 2026
25 checks passed
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:M30-99 changed lines (additions + deletions).vouch:trustedPR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@maria-rcks
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

fix(server): settle branch threads immediately on pull request merge - #9528

Merged
maria-rcks merged 4 commits into
pingdotgg:mainfrom
maria-rcks:t3code/fix-thread-pr-merge-settling
Sep 4, 2026
Merged

fix(server): settle branch threads immediately on pull request merge#9528
maria-rcks merged 4 commits into
pingdotgg:mainfrom
maria-rcks:t3code/fix-thread-pr-merge-settling

Conversation

@maria-rcks

@maria-rcksmaria-rcks commented Sep 4, 2026

Copy link
Copy Markdown
Collaborator

Merging from the in-app pull request viewer left branch threads active for minutes: the merge fast-path only swept explicitly linked threads, so everything else waited for the next minute's sweep on a branch lookup that can stay cached as open for two minutes.

The merge event now re-sweeps every auto-settlement candidate and drops the swept checkouts' cached git answers first, so a merge settles its branch threads in seconds. Threads linked to the merged pull request still settle from the event itself without a lookup.

Verified with the reactor suite (10 tests, including a new regression test that fails on the old code) plus the settlement policy suite (12 tests), and a clean typecheck for the touched files. Built with Muse Spark on OpenCode.


Note

Medium Risk
Changes merge settlement scope and linked-PR matching (exact repo/number), plus shorter PR lookup caching, which affects orchestration timing and API load under settlement sweeps.

Overview
Merging a PR in-app no longer leaves branch-only threads active for minutes. A merge-triggered settlement sweep now considers every auto-settlement candidate (not only threads with an explicit PR link), and it calls GitManager.invalidateStatus on each branch lookup checkout first so cached “open” branch PR state cannot block settlement.

Threads that are linked to the merged PR still settle from the merge event without a lookup; linked threads for other PRs keep using a normal summary lookup instead of inheriting the merge. PR_LOOKUP_CACHE_TTL drops from two minutes to 60 seconds so periodic sweeps see fresher branch PR state without waiting out a longer cache.

Tests cover immediate branch-thread settlement on merge, cache invalidation, and that an unrelated merge does not settle other linked threads.

Reviewed by Cursor Bugbot for commit 85d76cc. Bugbot is set up for automated code reviews on this repo. Configure here.

Note

Settle branch threads immediately on pull request merge in ThreadSettlementReactor

  • Merge-event sweeps now include all auto-settlement candidates instead of only threads linked to the event's pull request, and invalidate cached branch status for eligible unlinked threads before lookup
  • pullRequestFor now compares project, repository, and pull-request number exactly, so only the thread linked to the exact merged PR gets merged state; unrelated linked threads continue through normal lookup
  • Reduces PR_LOOKUP_CACHE_TTL from 2 minutes to 60 seconds so the settlement sweep observes merge state sooner
  • Risk: sweep now processes all eligible threads on every merge event and invalidates up to eight working directories concurrently, which may increase load during merge bursts; check ThreadSettlementReactor.ts for concurrency limits

Macroscope summarized 85d76cc.

@github-actionsgithub-actionsBot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:S 10-29 changed lines (additions + deletions). labels Sep 4, 2026
Comment threadapps/server/src/orchestration/ThreadSettlementReactor.ts

@cursorcursorBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes using default effort and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit f2e2c4c. Configure here.

Comment threadapps/server/src/orchestration/ThreadSettlementReactor.ts
@macroscopeapp

macroscopeappBot commented Sep 4, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Approved at 85d76cc

Macroscope's review found this PR approvable — This is a focused server-side bug fix that refreshes cached branch state on merge and settles only eligible threads, with regression tests for immediate settlement and unrelated pull requests. Its additional lookup work is confined to the settlement path and concurrency-bounded.

You can add or adjust custom eligibility rules. Learn more.

@github-actionsgithub-actionsBot added size:M 30-99 changed lines (additions + deletions). and removed size:S 10-29 changed lines (additions + deletions). labels Sep 4, 2026
macroscopeapp[bot]
macroscopeappBot previously approved these changes Sep 4, 2026
@macroscopeapp
macroscopeappBot dismissed their stale reviewSeptember 4, 2026 01:03

Dismissing prior approval to re-evaluate 85d76cc

@maria-rcks
maria-rcks merged commit 2b96220 into pingdotgg:mainSep 4, 2026
25 checks passed
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:M30-99 changed lines (additions + deletions).vouch:trustedPR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@maria-rcks
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

fix(server): settle branch threads immediately on pull request merge - #9528

Merged
maria-rcks merged 4 commits into
pingdotgg:mainfrom
maria-rcks:t3code/fix-thread-pr-merge-settling
Sep 4, 2026
Merged

fix(server): settle branch threads immediately on pull request merge#9528
maria-rcks merged 4 commits into
pingdotgg:mainfrom
maria-rcks:t3code/fix-thread-pr-merge-settling

Conversation

@maria-rcks

@maria-rcksmaria-rcks commented Sep 4, 2026

Copy link
Copy Markdown
Collaborator

Merging from the in-app pull request viewer left branch threads active for minutes: the merge fast-path only swept explicitly linked threads, so everything else waited for the next minute's sweep on a branch lookup that can stay cached as open for two minutes.

The merge event now re-sweeps every auto-settlement candidate and drops the swept checkouts' cached git answers first, so a merge settles its branch threads in seconds. Threads linked to the merged pull request still settle from the event itself without a lookup.

Verified with the reactor suite (10 tests, including a new regression test that fails on the old code) plus the settlement policy suite (12 tests), and a clean typecheck for the touched files. Built with Muse Spark on OpenCode.


Note

Medium Risk
Changes merge settlement scope and linked-PR matching (exact repo/number), plus shorter PR lookup caching, which affects orchestration timing and API load under settlement sweeps.

Overview
Merging a PR in-app no longer leaves branch-only threads active for minutes. A merge-triggered settlement sweep now considers every auto-settlement candidate (not only threads with an explicit PR link), and it calls GitManager.invalidateStatus on each branch lookup checkout first so cached “open” branch PR state cannot block settlement.

Threads that are linked to the merged PR still settle from the merge event without a lookup; linked threads for other PRs keep using a normal summary lookup instead of inheriting the merge. PR_LOOKUP_CACHE_TTL drops from two minutes to 60 seconds so periodic sweeps see fresher branch PR state without waiting out a longer cache.

Tests cover immediate branch-thread settlement on merge, cache invalidation, and that an unrelated merge does not settle other linked threads.

Reviewed by Cursor Bugbot for commit 85d76cc. Bugbot is set up for automated code reviews on this repo. Configure here.

Note

Settle branch threads immediately on pull request merge in ThreadSettlementReactor

  • Merge-event sweeps now include all auto-settlement candidates instead of only threads linked to the event's pull request, and invalidate cached branch status for eligible unlinked threads before lookup
  • pullRequestFor now compares project, repository, and pull-request number exactly, so only the thread linked to the exact merged PR gets merged state; unrelated linked threads continue through normal lookup
  • Reduces PR_LOOKUP_CACHE_TTL from 2 minutes to 60 seconds so the settlement sweep observes merge state sooner
  • Risk: sweep now processes all eligible threads on every merge event and invalidates up to eight working directories concurrently, which may increase load during merge bursts; check ThreadSettlementReactor.ts for concurrency limits

Macroscope summarized 85d76cc.

@github-actionsgithub-actionsBot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:S 10-29 changed lines (additions + deletions). labels Sep 4, 2026
Comment threadapps/server/src/orchestration/ThreadSettlementReactor.ts

@cursorcursorBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes using default effort and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit f2e2c4c. Configure here.

Comment threadapps/server/src/orchestration/ThreadSettlementReactor.ts
@macroscopeapp

macroscopeappBot commented Sep 4, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Approved at 85d76cc

Macroscope's review found this PR approvable — This is a focused server-side bug fix that refreshes cached branch state on merge and settles only eligible threads, with regression tests for immediate settlement and unrelated pull requests. Its additional lookup work is confined to the settlement path and concurrency-bounded.

You can add or adjust custom eligibility rules. Learn more.

@github-actionsgithub-actionsBot added size:M 30-99 changed lines (additions + deletions). and removed size:S 10-29 changed lines (additions + deletions). labels Sep 4, 2026
macroscopeapp[bot]
macroscopeappBot previously approved these changes Sep 4, 2026
@macroscopeapp
macroscopeappBot dismissed their stale reviewSeptember 4, 2026 01:03

Dismissing prior approval to re-evaluate 85d76cc

@maria-rcks
maria-rcks merged commit 2b96220 into pingdotgg:mainSep 4, 2026
25 checks passed
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:M30-99 changed lines (additions + deletions).vouch:trustedPR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@maria-rcks