{
"issueNumber": 555,
"branchName": "rc/atlassian-integration",
"generatedAt": "2026-04-23T17:15:37Z",
"stories": [
{
"id": "S1",
"title": "Implement Bitbucket webhook client helper + PR-lifecycle fixtures (created/updated/approved/merged)",
"priority": 1,
"dependsOn": [],
"acceptanceCriteria": [
"test/helpers/bitbucket-webhook-client.ts exports sendBitbucketWebhook(eventType, body) and POSTs to /webhooks/bitbucket?secret=... with X-Event-Key and X-Request-UUID headers",
"Helper reads BITBUCKET_WEBHOOK_SECRET from env and throws clear error when unset",
"Fixtures pr_created/pr_updated/pr_approved/pr_merged exist under test/fixtures/bitbucket/ and parse as valid JSON",
"Each fixture contains minimum fields BitbucketAdapter.normalize() reads (pullrequest.id, repository.full_name, actor.nickname)"
],
"passes": false,
"completedAt": null
},
{
"id": "S2",
"title": "Add Bitbucket pr_comment + push fixtures and the Bitbucket smoke test",
"priority": 2,
"dependsOn": [
"S1"
],
"acceptanceCriteria": [
"pr_comment.json and push.json exist under test/fixtures/bitbucket/ and parse as valid JSON",
"test/smoke/bitbucket.smoke.e2e-spec.ts loads one fixture, calls sendBitbucketWebhook, asserts status === 'dispatched'",
"Smoke test passes against a local agent-core instance with BJ-6 merged"
],
"passes": false,
"completedAt": null
},
{
"id": "S3",
"title": "Implement Jira webhook client helper + 4 Jira fixtures",
"priority": 3,
"dependsOn": [],
"acceptanceCriteria": [
"test/helpers/jira-webhook-client.ts exports sendJiraWebhook(eventType, body) and signs the raw JSON body with HMAC-SHA256 under X-Hub-Signature: sha256=<hex>",
"Helper reads JIRA_WEBHOOK_SECRET from env and throws clear error when unset",
"Fixtures issue_created/issue_updated/issue_deleted/comment_created exist under test/fixtures/jira/ and parse as valid JSON",
"Each fixture includes webhookEvent and the minimum issue/comment/changelog fields JiraAdapter.normalize() reads"
],
"passes": false,
"completedAt": null
},
{
"id": "S4",
"title": "Add Jira smoke test verifying end-to-end dispatch",
"priority": 4,
"dependsOn": [
"S3"
],
"acceptanceCriteria": [
"test/smoke/jira.smoke.e2e-spec.ts loads one fixture, calls sendJiraWebhook, asserts status === 'dispatched'",
"Smoke test passes against a local agent-core instance with BJ-7 merged"
],
"passes": false,
"completedAt": null
}
]
}