Expand description
A stateless onetaskgraph source over one GitHub Projects v2 project.
A project maps to the configured GitHub ProjectV2, not a repository: one Projects v2
board can contain work from several repositories and draft work from none. Project fields
read ProjectV2.id, title, shortDescription, url, createdAt, and updatedAt. Tasks
map from ProjectV2Item.content (Issue, PullRequest, or DraftIssue); labels read the
content’s labels connection and ProjectV2ItemFieldLabelValue.
Status reads the item value whose ProjectV2ItemFieldSingleSelectValue.field.name is
Status. Its option name is retained. The default maps Backlog, Todo/Open, In Progress/In
Review, Done/Closed/Merged, and Cancelled/Canceled; status_mapping overrides option names
case-insensitively, and all other user-defined names remain Unknown.
ProjectV2.items pages but has no label, status, orphan, or content-search arguments.
Project listing alone is native; the plugin ignores every unsupported query predicate so the
engine can compensate from the wider result. Dependencies traverse underlying Issue nodes.
Issue.blockedBy supplies DependsOn edges and Issue.blocking supplies DependedOnBy
edges; pull requests and draft issues have neither field and therefore return an empty edge
page. Both dependency capabilities are BothDirections; project dependency reads aggregate
the configured project’s issue edges. Projects v2 has no native project-to-project relationship,
so those aggregate edges use the related issues’ projectItems.project.id.
Writes update the configured board, create draft items (never another board), update existing draft items, set the source-owned metadata field, and use GitHub’s native issue dependency mutation when both ends are issues. Required checks use only the local fixture server; the ignored credentialed lane verifies the current schema, creates and reads back one uniquely named draft, then deletes every matching project item and verifies that no residue remains.
That lane writes only to the board GH_PROJECTS_OWNER and GH_PROJECTS_NUMBER name, and
skips — as it does without GH_PROJECTS_TOKEN — when they are absent. Requiring the board to
be nominated is what keeps a credentialed write lane off a board nobody nominated; it never
asks GitHub which project was updated most recently. Before it starts, the lane also clears
any item titled the way it titles its own artifacts, which is self-healing after an
interrupted run: a process killed between its write and its cleanup leaves an artifact the
next run removes.
Modules§
- graphql
- Exact GraphQL query documents issued by this plugin.
Structs§
- GitHub
Projects Config - Configuration for one GitHub Projects v2 project.
- GitHub
Projects Source - A source which reads GitHub afresh for every operation.
- Plugin
- Factory for
GitHubProjectsSource.
Constants§
- KIND
- The registry name for this plugin.
- MAX_
PAGE_ SIZE - GitHub’s maximum connection page size.