test: add Linear to the emulate.dev tier once emulate's Linear schema matches Linear

Open
#148 0 comments 0 reactions 0 assignees View on GitHub

Maintainers usually reply within 1 day

Nobody has claimed this yet.

Assessment

Difficulty
4/5
Estimated time
3-5 days
Newbie friendliness
34/100
Issue type
Feature
Clarity
Mostly clear
Activity status
Active
Tech stack
go, graphql
Domain
backend, testing

Research direction

Start by reading testdata/emulate/seed.yaml and the Linear gap list in CONTRIBUTING.md, then check a pinned emulate release against the four schema and webhook gaps listed in the issue. Once all four are fixed upstream, add a TestEmulateLinear* flow from a signed webhook through the HTTP handler to a stored GraphQL reply. Confirm it passes with mise run emulate and skips when its environment variable is absent; update the gap list to describe only remaining issues.

Written by the indexing model from the issue text.

Description

enhancement

Problem

The emulate.dev tier from #147 covers only the Slack adapter. A Linear flow (webhook → handler → GraphQL reply) cannot pass against emulate 0.12.3, because emulate's Linear schema differs from Linear's. I checked emulate 0.12.3 and 0.13.0; both have the same Linear code.

  1. User has no organization field, so the single-install Init query (viewer { id name displayName organization { id } }) fails.
  2. CommentCreateInput has no parentId, so every threaded comment reply fails variable validation.
  3. AgentActivityCreateInput is {sessionId, type, body}. Linear's is {agentSessionId, content}, so every agent activity fails.
  4. Comment webhooks carry data.userId but no data.user, so the adapter ignores them as having no author. AgentSessionEvent webhooks carry the session in data instead of the top-level agentSession, so the adapter ignores them too.

Our adapter follows Linear's documented shapes, so these are emulate gaps, not adapter bugs. The owner chose to ship the tier without Linear tests (2026-10-30).

Proposal

Add a Linear emulate test when a pinned emulate release fixes these four gaps: a signed webhook from emulate → the adapter's HTTP handler → the handler → a GraphQL reply that emulate stores. The seed in testdata/emulate/seed.yaml already has a Linear team and an actor: app OAuth app.

Follow-up trigger: a new emulate release. Check its Linear schema for the four items above before bumping the pin.

Acceptance

  • TestEmulateLinear* passes against the pinned emulate with mise run emulate running and skips without its environment variable.
  • The Linear gap list in CONTRIBUTING.md shrinks to what is still true.

Generated with xum • Model: anthropic:claude-opus-5-5 • Thinking: high

Dominant language
Go
Stars
2
Forks
0
Avg merge
7h 37m
Merged PRs (30d)
26

Getting set up

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from coder/chat

All issues in coder/chat

Similar issues

More Go issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.