{
"issueNumber": 549,
"branchName": "rc/atlassian-integration",
"generatedAt": "2026-04-23T17:12:46Z",
"stories": [
{
"id": "S1",
"title": "Implement JiraService with 11 methods, 429 retry, 401 refresh",
"priority": 1,
"dependsOn": [],
"acceptanceCriteria": [
"All 11 methods implemented with correct REST v3 endpoints",
"Private request() attaches Bearer token from PlatformAuthProvider.getToken()",
"429 response triggers one retry honoring Retry-After header",
"401 response triggers one token refresh + retry; propagates if still 401",
"Constructor throws configuration error when JIRA_CLOUD_ID is unset",
"No `any` types; passes strict lint"
],
"passes": false,
"completedAt": null
},
{
"id": "S2",
"title": "Wire JiraModule (factory for JIRA_SERVICE), register JIRA_CLOUD_ID in config schema, add JiraModule to AppModule",
"priority": 2,
"dependsOn": [
"S1"
],
"acceptanceCriteria": [
"JiraModule provides JIRA_SERVICE via useFactory + inject",
"JiraModule exports JIRA_SERVICE and JiraService",
"config.schema.ts adds JIRA_CLOUD_ID as required string",
"AppModule imports JiraModule",
"Barrel src/jira/index.ts exports JiraService, JiraModule, JIRA_SERVICE",
"npm run build succeeds"
],
"passes": false,
"completedAt": null
},
{
"id": "S3",
"title": "Unit tests covering all methods, 429 retry, 401 refresh, config error, empty-result paths",
"priority": 3,
"dependsOn": [
"S1"
],
"acceptanceCriteria": [
"Test per method asserts URL, method, body shape",
"429 test asserts Retry-After honored and retry succeeds",
"401 test asserts getToken called twice and retry succeeds",
"Missing JIRA_CLOUD_ID test asserts startup-time throw",
"getTransitions empty response returns []",
"searchJql zero-result response returns []",
"npm run test passes"
],
"passes": false,
"completedAt": null
},
{
"id": "S4",
"title": "Document JIRA_CLOUD_ID in .env.example and CLAUDE.md",
"priority": 4,
"dependsOn": [
"S2"
],
"acceptanceCriteria": [
".env.example contains JIRA_CLOUD_ID entry",
"CLAUDE.md env-var table includes JIRA_CLOUD_ID row",
"CLAUDE.md Key modules list includes `jira`"
],
"passes": false,
"completedAt": null
}
]
}