Remove the label-carrying GitHubClient.createIssue overload orphaned by IW-426 #452

Open
opened 2026-08-26 10:24:20 +00:00 by mph · 1 comment
Owner

IW-426 moved iw feedback from the archived GitHub mirror to Forgejo, and its Phase 2 removed the
dead TrackerOps.createFeedbackIssue routing layer. That deletion orphaned the label-carrying
overload GitHubClient.createIssue(repository, title, description, issueType) at
core/adapters/GitHubClient.scala:203. LiveCommandEnv.createFeedbackIssue was its only caller.

The overload was left in place by an explicit decision recorded in
project-management/issues/IW-426/tasks.md ("Decisions Taken on the Analysis Recommendation") and
phase-02-context.md ("Non-goals"). Removing it inside IW-426 would have widened a
documentation-cleanup diff into an unrelated adapter, against "smallest reasonable change". The
decision was made knowing it leaves dead code, and this issue is the price of that call.

What to remove

  • GitHubClient.createIssue(…, issueType) — core/adapters/GitHubClient.scala:203
  • buildCreateIssueCommand — :105. Orphaned by the above.
  • The only production use of isLabelError — :280. Check whether the helper itself still has a
    caller after the removal.
  • case FeedbackParser.IssueType.Feature => "feedback" — :114, the label mapping inside the
    retained overload.
  • Roughly ten tests in core/test/GitHubClientTest.scala that cover the removed overload.

What must NOT be removed

buildCreateIssueCommandWithoutLabel at :164 and its test. The three-argument createIssue
(:256) calls it at :271, and that overload is live via Issue.createIssue →
TrackerOps.createGitHubIssue (core/commands/LiveCommandEnv.scala:439-444). Issue creation
through gh must keep working.

FeedbackParser.getLabelIdForIssueType and Constants.IwCliLabels (core/model/Constants.scala:72-75)
are Linear label UUIDs, dead since the migration off Linear. They are not caused by IW-426 and are
recorded separately in that issue's LESSONS.md.

Estimate: about 1 hour.

IW-426 moved `iw feedback` from the archived GitHub mirror to Forgejo, and its Phase 2 removed the dead `TrackerOps.createFeedbackIssue` routing layer. That deletion orphaned the label-carrying overload `GitHubClient.createIssue(repository, title, description, issueType)` at `core/adapters/GitHubClient.scala:203`. `LiveCommandEnv.createFeedbackIssue` was its only caller. The overload was left in place by an explicit decision recorded in `project-management/issues/IW-426/tasks.md` ("Decisions Taken on the Analysis Recommendation") and `phase-02-context.md` ("Non-goals"). Removing it inside IW-426 would have widened a documentation-cleanup diff into an unrelated adapter, against "smallest reasonable change". The decision was made knowing it leaves dead code, and this issue is the price of that call. ## What to remove - `GitHubClient.createIssue(…, issueType)` — `core/adapters/GitHubClient.scala:203` - `buildCreateIssueCommand` — `:105`. Orphaned by the above. - The only production use of `isLabelError` — `:280`. Check whether the helper itself still has a caller after the removal. - `case FeedbackParser.IssueType.Feature => "feedback"` — `:114`, the label mapping inside the retained overload. - Roughly ten tests in `core/test/GitHubClientTest.scala` that cover the removed overload. ## What must NOT be removed `buildCreateIssueCommandWithoutLabel` at `:164` and its test. The three-argument `createIssue` (`:256`) calls it at `:271`, and that overload is live via `Issue.createIssue` → `TrackerOps.createGitHubIssue` (`core/commands/LiveCommandEnv.scala:439-444`). Issue creation through `gh` must keep working. ## Related, but separate `FeedbackParser.getLabelIdForIssueType` and `Constants.IwCliLabels` (`core/model/Constants.scala:72-75`) are Linear label UUIDs, dead since the migration off Linear. They are not caused by IW-426 and are recorded separately in that issue's `LESSONS.md`. Estimate: about 1 hour.
Member

Intake: needs-human
Workflow: waterfall
Reason: G7 a standing [fix] finding: the implementation sequence adds defaulted parameters to the three-argument createIssue while the five-parameter overload, which already has defaults, still exists; Scala rejects that, so the two changes must be one step (correction refused, second review found it again)
Analysis: project-management/issues/IW-452/analysis.md on branch IW-452

Intake: needs-human Workflow: waterfall Reason: G7 a standing [fix] finding: the implementation sequence adds defaulted parameters to the three-argument createIssue while the five-parameter overload, which already has defaults, still exists; Scala rejects that, so the two changes must be one step (correction refused, second review found it again) Analysis: project-management/issues/IW-452/analysis.md on branch IW-452
Sign in to join this conversation.
No milestone
No project
No assignees
2 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
iterative-works/iw-cli#452
No description provided.