Skip to content

GH-93: feat(jira): implement SyncCapable + new CreateIssue/UpdateFields + sdk/util/retry adoption#98

Merged
alekspetrov merged 1 commit into
mainfrom
pilot/GH-93
Jul 13, 2026
Merged

GH-93: feat(jira): implement SyncCapable + new CreateIssue/UpdateFields + sdk/util/retry adoption#98
alekspetrov merged 1 commit into
mainfrom
pilot/GH-93

Conversation

@alekspetrov

Copy link
Copy Markdown
Contributor

Summary

Automated PR created by Pilot for task GH-93.

Closes #93

Changes

GitHub Issue GH-93: feat(jira): implement SyncCapable + new CreateIssue/UpdateFields + sdk/util/retry adoption

Context

SaaS pre-work S0.10. Implements the #83 SyncCapable contract for Jira — the connector with real write gaps: JQL search + GetTransitions/TransitionIssueTo exist, but there is NO CreateIssue and NO general field-update method (verified 2026-07-13). Also adopts the shared retry package.

Depends on: #84

Implementation

In sdk/integrations/jira:

  1. NEW CreateIssue (POST /rest/api/3/issue) and UpdateFields (PUT /rest/api/3/issue/{key}) — plain REST, ADF or plain-text body per existing client conventions.
  2. Implement core.SyncCapable: ListUpdatedSince via JQL project = X AND updated >= "<ts>" ORDER BY updated ASC paged by startAt/maxResults; ListAll same without the filter; GetIssue; TransitionState = existing GetTransitions→TransitionIssueTo (name-based); AddComment with the <!-- pilot-op:{idemKey} --> marker (Jira preserves it in ADF); mapping: StateGroup = status category (To Do / In Progress / Done), SequenceID = PROJ-42 key.
  3. Adopt sdk/util/retry (refactor(util): generalize github retry into sdk/util/retry with typed RateLimitError/AuthError #84) for all Jira HTTP calls with per-response error classification (429/Retry-After → RateLimitError; 401/403 → AuthError).

Acceptance

  • SyncCapable conformance compile check; CreateIssue + UpdateFields against mocked REST
  • Delta JQL pagination test (multi-page startAt); status-category StateGroup mapping test
  • Retry adoption: 429 with Retry-After honored, AuthError short-circuits (no retry)
  • Existing Jira connector tests green

Refs

…adoption (GH-93)

Adds core.SyncCapable to the Jira connector: JQL-paged ListUpdatedSince/
ListAll (startAt/maxResults), GetIssue, TransitionState, AddComment with the
pilot-op idempotency marker (raw-JSON substring match, ADF-safe), and new
CreateIssue/UpdateFields REST calls. StateGroup maps Jira's status category
onto the To Do/In Progress/Done taxonomy. doRequest now runs through
sdk/util/retry with typed RateLimitError (429, Retry-After honored) and
AuthError (401/403, no retry) classification, matching the GitHub connector's
retry adoption.
@alekspetrov
alekspetrov merged commit 3d48378 into main Jul 13, 2026
3 checks passed
@alekspetrov
alekspetrov deleted the pilot/GH-93 branch July 13, 2026 18:56
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

feat(jira): implement SyncCapable + new CreateIssue/UpdateFields + sdk/util/retry adoption

1 participant