AI Agents SDE Task Viewer
      • Context
      • Plan
      • Prd
  1. Home
  2. AgentSDE
  3. agent-core
  4. gh-549
  5. plan
  6. prd.json
prd.json(2.5 KB)ยท Apr 23, 2026
{
  "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
    }
  ]
}
PlanPr description