chore(factory): add linear.states role->name map to factory config#381
chore(factory): add linear.states role->name map to factory config#381khaliqgant wants to merge 1 commit into
Conversation
Lets the factory resolve a state NAME to its role UUID when the synced record carries state.name but no state.id — a fallback for sparse Linear sync records (belt-and-suspenders alongside the upstream nango sync fidelity fix). Consumed by createFactory's state resolver (seeds the name->UUID map from this block). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
Warning Review limit reached
More reviews will be available in 30 minutes and 5 seconds. Learn how PR review limits work. Your organization has used up its prepaid credits, and credit purchases are no longer available. Enable the review add-on in the billing tab to keep reviews running — you're only billed for reviews past your plan's rate limits ($0.25/file). ⌛ How to resolve this issue?After more reviews become available, a review can be triggered using the To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based credits. 🚦 How do rate limits work?CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan refill rate. For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, the refill rate gradually slows as usage increases. The highest same-day bursts are limited more strictly. Please see our Fair Usage Limits Policy for further information. ℹ️ Review info⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (1)
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Code Review
This pull request adds a new linear configuration section to factory.config.json defining various workflow states like readyForAgent, agentImplementing, done, inPlanning, and humanReview. There are no review comments to evaluate, and I have no feedback to provide.
Important
The consumer version of Gemini Code Assist on GitHub is being sunset. Starting June 18, 2026, new organization installations will be blocked, and all code review activity will officially cease on July 17, 2026.
For more details on the timeline and next steps, please review the Help Documentation.
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: e6c88fba48
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| "humanReview": "24462e2d-9946-4dd1-a798-931cdd678498" | ||
| }, | ||
| "linear": { | ||
| "states": { |
There was a problem hiding this comment.
Scope the Linear state names to team AR
With the current factory state resolver, linear.states is resolved as a workspace-wide, unscoped name map before falling back to the explicit stateIds. In a multi-team Linear workspace where another team also has common workflow names like Done, this new global mapping can make startup fail with an ambiguous state-name error instead of using the pinned UUIDs; since this config subscribes only to team AR, these names should be placed under a team-scoped mapping rather than the global states block.
Useful? React with 👍 / 👎.
|
Node typecheck passes clean. The change is data-only in a JSON config (no TS files touched), so this confirms no type breakage. The PR is a minimal, schema-conformant, additive config change. My verification is complete. Review SummaryPR #381 ( "linear": {
"states": {
"readyForAgent": "Ready for Agent",
"agentImplementing": "Agent Implementing",
"done": "Done",
"inPlanning": "In Planning",
"humanReview": "In Human Review"
}
}Verdict: Correct and safe. This is a data-only addition to a JSON config file. Findings from tracing the change:
Verification run against the current checkout:
Addressed comments
No auto-edits were made — the PR required no mechanical fixes, and the change is purely additive, schema-valid config data. No semantic or safety-critical logic was touched. This is a clean, low-risk config change with passing local checks; the remaining merge decision is a human judgment call. |
|
Superseded by AgentWorkforce/factory#11 — the factory now ships its conventional |
Adds a
linear.states(role → state name) block topear/factory.config.json, paired with the existingstateIds(role → UUID) block.This lets the factory resolve a state by name to its role UUID when a synced Linear record carries
state.namebut nostate.id— the sparse-sync case. It's the belt-and-suspenders fallback alongside the upstream fixes:state.id/team/labels(the real fix; verified live, 149/149 records carrystate_id).createFactory's fallback state resolver seeds its name→UUID map from this block (factory#10), so this config is what makes the fallback work without the/linear/statescatalog. Once cloud#2284 deploys,state.idis present and this becomes pure defense-in-depth.🤖 Generated with Claude Code