From 86ef677f2fccc46edb4e0051c6622c12342bbe47 Mon Sep 17 00:00:00 2001 From: Emma Thorpe Date: Tue, 21 Jul 2026 10:32:14 +0100 Subject: [PATCH] docs(memory): record WSP Jira transition field + ADF quirks Add to jira-tooling memory: - per-issue-type transition required fields (Story Cancelled needs Resolution + Justification; Epic Cancelled needs neither) - cancel/won't-do resolution IDs (Won't Fix 10068, Canceled 10070, Obsolete 10073) - customfield_10070 (Justification) requires ADF, not a plain string, despite its textarea schema Co-Authored-By: Claude Opus 4.8 (1M context) --- home/claude/memory/jira_tooling.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/home/claude/memory/jira_tooling.md b/home/claude/memory/jira_tooling.md index 09c1d86..f8c0911 100644 --- a/home/claude/memory/jira_tooling.md +++ b/home/claude/memory/jira_tooling.md @@ -9,6 +9,10 @@ metadata: **Transitions:** `transitionJiraIssue` may fail if the issue lacks an assignee. Set assignee first via `editJiraIssue` when a transition errors on assignee requirement. +**Transition required fields (WSP):** the same target status can enforce different required fields per issue type — e.g. `Cancelled` on a Story requires `Resolution` + `Justification`, but on an Epic requires neither (so an Epic can land in Cancelled while still reading Unresolved). Fetch requirements with `getTransitionsForJiraIssue` + `expand=transitions.fields` before transitioning. Cancel/won't-do resolution values: `Won't Fix` (10068), `Canceled` (10070), `Obsolete` (10073 — use for superseded-by-another-ticket). + +**ADF-only custom fields:** the WSP `Justification` field (`customfield_10070`) advertises schema `textarea` (string) but the API rejects a plain string — it requires an Atlassian Document Format object (`{type:"doc",version:1,content:[...]}`). If a transition/edit errors with "Operation value must be an Atlassian Document", wrap the text in ADF. + **Issue link direction:** For `createIssueLink`, "X is blocked by Y" means `inwardIssue=Y` (the blocker), `outwardIssue=X` (the blocked), `type.name="Blocks"`. Inward = the side the link points _from_; outward = the side it points _to_. **WSP project transition IDs:** -- 2.54.0