{
"issueNumber": 542,
"branchName": "rc/atlassian-integration",
"generatedAt": "2026-04-23T17:11:20Z",
"stories": [
{
"id": "S1",
"title": "Create BitbucketOAuthAuthProvider extending AtlassianOAuthAuthProvider with bitbucket-specific overrides",
"priority": 1,
"dependsOn": [],
"acceptanceCriteria": [
"File src/atlassian/bitbucket-oauth-auth.provider.ts exists and compiles",
"readonly platform === 'bitbucket'",
"Token endpoint string equals 'https://bitbucket.org/site/oauth2/access_token'",
"getBotUsername() returns BITBUCKET_BOT_USERNAME from ConfigService",
"getBotUsername() throws a typed error when BITBUCKET_BOT_USERNAME is unset"
],
"passes": false,
"completedAt": null
},
{
"id": "S2",
"title": "Create BitbucketModule with factory registration of PLATFORM_AUTH_PROVIDER gated on BITBUCKET_OAUTH_CLIENT_ID, and register it in app.module.ts",
"priority": 2,
"dependsOn": [
"S1"
],
"acceptanceCriteria": [
"src/bitbucket/bitbucket.module.ts exists with factory provider mirroring src/github/github.module.ts",
"Factory returns BitbucketOAuthAuthProvider only when BITBUCKET_OAUTH_CLIENT_ID is set",
"Module boots cleanly when BITBUCKET_OAUTH_CLIENT_ID is absent",
"BitbucketModule is imported in src/app.module.ts"
],
"passes": false,
"completedAt": null
},
{
"id": "S3",
"title": "Add unit tests for the new provider and factory wiring",
"priority": 3,
"dependsOn": [
"S2"
],
"acceptanceCriteria": [
"src/atlassian/bitbucket-oauth-auth.provider.spec.ts exists",
"Spec asserts platform id, token endpoint, getBotUsername success and throw paths",
"Factory wiring test covers both configured and unconfigured BITBUCKET_OAUTH_CLIENT_ID",
"npm run test passes with zero failures",
"npm run lint passes with zero warnings"
],
"passes": false,
"completedAt": null
}
]
}