{
"issueNumber": 382,
"branchName": "fix/382-e2e-mt-regressions",
"generatedAt": "2026-04-12T08:45:00Z",
"stories": [
{
"id": "S1",
"title": "Create GitHubPlatformProvider and wire into PlatformModule",
"priority": 1,
"dependsOn": [],
"acceptanceCriteria": [
"GitHubPlatformProvider exists and delegates postComment/closePR/deleteBranch to GitHubService",
"PlatformModule uses useClass: GitHubPlatformProvider instead of no-op useValue",
"PlatformModule imports GitHubModule for DI resolution",
"Unit tests verify delegation to GitHubService"
],
"passes": false,
"completedAt": null
},
{
"id": "S2",
"title": "Fix PhaseRouterService to apply mode directive changes in webhook path",
"priority": 2,
"dependsOn": [],
"acceptanceCriteria": [
"PhaseRouterService step 2d sets task.directive for auto/quick/careful directives",
"task.directive is saved before gate clearing",
"Unit test: /agent auto on gated task sets directive=auto and clears gate"
],
"passes": false,
"completedAt": null
},
{
"id": "S3",
"title": "Fix webhook secret handling and clean up duplicate PLATFORM_PROVIDER token",
"priority": 3,
"dependsOn": [
"S1"
],
"acceptanceCriteria": [
"webhook.controller.ts uses get() for GITHUB_WEBHOOK_SECRET",
"Signature verification is skipped when secret is empty/undefined",
"tenant.constants.ts re-exports PLATFORM_PROVIDER from platform-provider.interface.ts",
"TenantModule does not provide its own PLATFORM_PROVIDER",
"All existing tests pass with zero lint warnings"
],
"passes": false,
"completedAt": null
}
]
}