A read/write source over Linear's published GraphQL API.
Linear Issue maps to [Task], Project to [Project], IssueLabel and
ProjectLabel to [Label], and WorkflowState.name is preserved while its
type (backlog, unstarted, started, completed, or canceled) maps to
the normalized status category. Issue relations/inverseRelations and
project relations provide native dependency traversal in both directions.
Label, workflow-state, project, and orphan filters are sent in the
issues(filter:)/projects(filter:) variables. Linear's separate search
connection cannot restrict matching to title versus description, so all
three text predicates are deliberately unsupported and ignored here for
sound engine compensation. Pagination uses Relay first and after.
Caller metadata is canonical JSON in a trailing
<!-- onetaskgraph.metadata ... --> Markdown comment in the item's description. The
visible description is returned unchanged without that slot. Writes put the same
canonical encoding back beside the visible description, and use Linear issue/project
relations for same-source dependencies. Only cross-source far ends use the reserved
onetaskgraph.depends_on metadata key.
Fixture provenance is recorded in tests/fixtures/README.md. The ignored live lane
exercises reads by default; its mutation journey requires an explicitly named scratch
team and immediately requests deletion of its scratch issue. A failed live cleanup is
reported as a test failure and may require manual deletion from that scratch team.