Repository navigation
fix: Server-side auto-kickoff label filter and Linear OAuth proxy path - #596
Merged
Merged
Conversation
The poller listed the first 100 issues in the workspace and filtered by label locally. Labeled issues outside that window were never kicked off, and because the ledger prunes ids missing from the list, a handled issue that fell out of the window and came back was kicked off again. Completed and canceled issues with the label were kicked off too, which bit anyone configuring a label for the first time. Query Linear for open issues carrying the label (case-insensitive), ids only, following every page. If the list would exceed 5,000 issues the poll fails instead of pruning the ledger against a partial list. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_015cmSSvMnu4gc6NhMhKrt2v
Drives linear_list_labeled_issue_ids_impl, the poller's candidate lookup. It must find a labeled issue that an unfiltered first page would miss, skip completed and canceled issues, and fail rather than return a truncated list the ledger would prune against. All three fail against the previous poller logic (first 100 issues, label filtered locally). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_015cmSSvMnu4gc6NhMhKrt2v
Co-authored-by: Claude <noreply@anthropic.com>
Ziinc
force-pushed
the
claude/linear-kickoff-label-filter
branch
from
September 29, 2026 19:23
0ef18df to
5f95ed2
Compare
This branch was successfully deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Rebased onto
main. This PR now carries two changes, one commit set each:The merge commits are gone. What remains are 3 commits on top of
main:fix: Find auto-kickoff issues with a server-side label filtertest: Cover auto-kickoff issue selection against a mock serverfix: Route OAuth-connected Linear calls through linear-proxy (#597)Rebase conflicts
The conflicts were between #597 and #601, which is now in
main. The resolution keeps #601's rule of one workspace per call and applies #597's client routing:linear_open_or_create_workspace_from_issuefetches the issue through the resolved client (API key or proxy) and opens exactly one workspace.kickoff_linear_issue_internal(repo_path, client, issue_id)has no sub-issue loop and no parent bookkeeping.Label filter: problem
The poller fetched the first 100 workspace issues and filtered them by label locally:
KickoffLedger::due()drops ids missing from the list. A handled issue that left the window and came back was then kicked off again.Label filter: change
linear_list_labeled_issue_ids_implasks Linear for open labeled issues only:labels.some.name.eqIgnoreCaseplusstate.type nin [completed, canceled]. It fetches ids only, across all pages.Testing after the rebase
cargo test --lib -- linear tracker: 48 pass. The 2 failures are thecore::workspacestests that need thejjbinary, which isn't installed in the sandbox. They fail the same way onmain.-D warningsandcargo fmt --checkpass.ast-grep scan --warning.deno checkanddeno fmt --checkpass onlinear-proxy.build:napi:linear-kickoff-agent-prompt,issue-kickoff-flow,session-started-toastandtracker-kickoff-agent-prompt(11 tests).🤖 Generated with Claude Code
https://claude.ai/code/session_015cmSSvMnu4gc6NhMhKrt2v