Skip to content

GitHub transport: whole-map GraphQL read and single-ticket REST refresh #117

Description

@mayfieldiv

Implements part of the wayfinder ticket surface. Read first: the spec — the resolution comment on #112 — and CONTEXT.md's ### Wayfinder tickets section (on main, merged via PR #113), plus AGENTS.md. Use the spec's vocabulary exactly.

Spec §4; full API evidence on local branch research/github-subissues-dependencies (docs/research/github-subissues-dependencies.md).

  • Wire types (Issue, IssueState, SubIssuesSummary, DependenciesSummary) in src/github/types.rs after IssueComment — permissive #[serde(default)] posture.
  • fetch_wayfinder_map in src/github/graphql.rs (query verbatim from spec §4.1; envelope must impl GraphQlErrors), modelled on fetch_review_status/fetch_review_threads.
  • get_issue + list_issues_with_label in src/github/rest.rs beside list_issue_comments; get_all accepts only per_page — generalize or pre-bake the query string.
  • Blocked-ness inputs come from the blockedBy list filtered on state == OPEN — never the eventually-consistent summary counter. Keep each node's repository.nameWithOwner (External Dependency detection).
  • Never call GET …/parent; treat every 404 as a genuine error (it is — including the missing-Issues-scope case).
  • Fallback detection only (spec §4.4): a map with zero sub-issues but a task-list body, or Part of #n/Blocked by: #n leading lines, yields a "degraded dialect" signal for the effort card — no body-line parsing into the model.
  • Parsers as pure parse_* functions with fixture tests in graphql/tests.rs / rest/tests.rs.

Metadata

Metadata

Assignees

Labels

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions