Linear
Full sync GraphQLGroundTruth reads your Linear issues over the GraphQL API, links each to the GitHub work that implements it, and moves it to the correct workflow state, only when the code and the acceptance criteria agree.
What we read
- Issues by team, using the identifier (for example ENG-123), title, and description.
- The current workflow state and its type, the assignee, and the parent issue.
- Acceptance criteria written in the issue description, including checkbox lists.
What we write back
Linear has no separate transition objects, so a status change is setting the issue's workflow state. GroundTruth resolves the target state on the issue's team by name, and falls back to matching by state type, then applies it with a single issueUpdate. Every write is captured in the audit chain and is revertible.
Acceptance-criteria gate
A merged pull request will not move an issue to a completed state while its acceptance criteria are unmet. It is routed to a review-type state and flagged, so nothing closes before it is actually done.
Setup
- Connect with a Linear personal API key, or via OAuth for a shared install.
- Optionally scope to a single team key; leave it blank to cover all teams.
- We backfill recent issues, then keep them current from webhooks.
Continuous sync
Add a Linear webhook for Issue events pointed at the URL we give you on connect. GroundTruth reconciles each change as it arrives.
State mapping
| Linear state | State type | GroundTruth category |
|---|---|---|
| Backlog | backlog | todo |
| Todo / Unstarted | unstarted | todo |
| In Progress / In Review (started) | started | in_progress |
| Done | completed | done |
| Canceled | canceled | canceled |
We map by Linear's state type, so your custom state names are respected. Started-type states cover both in-progress and review columns.
We never read or store your source code, only issue and PR metadata, statuses, and acceptance-criteria text. Least-privilege, revocable access: read plus the single write your workflow needs. Encrypted in transit and at rest, tenant-isolated. Every automated change is signed into an audit chain you can inspect, prove, and undo.
See it be right for a cycle, then let it keep Linear true.
Start free trial