{
"issueNumber": 352,
"branchName": "rc/multi-tenant",
"generatedAt": "2026-04-08T22:10:00Z",
"stories": [
{
"id": "S1",
"title": "Update handleSignal signature and dispatch logic in internal-adapter.service.ts — remove SignalKind, import PhaseResult, dispatch on result.status/blockedType with unrecognized-status fallback",
"priority": 1,
"dependsOn": [],
"acceptanceCriteria": [
"No import of SignalKind, SignalResult, or SignalParser in any internal-adapter file",
"handleSignal(taskId, phase, result: PhaseResult) signature in place",
"Dispatch covers: complete, skip, blocked:transient, blocked:persistent, blocked:conflict",
"Unrecognized result.status logs warning and treated as blocked:transient"
],
"passes": false,
"completedAt": null
},
{
"id": "S2",
"title": "Update PhaseRouterService call sites — remove toSignalKind(), construct PhaseResult from SignalResult, update 3 handleSignal calls",
"priority": 2,
"dependsOn": [
"S1"
],
"acceptanceCriteria": [
"toSignalKind() method removed from PhaseRouterService",
"All 3 handleSignal call sites pass PhaseResult objects",
"review_approved and worktree-failure paths construct valid PhaseResult"
],
"passes": false,
"completedAt": null
},
{
"id": "S3",
"title": "Update all unit tests in internal-adapter.service.spec.ts to use PhaseResult objects and add unrecognized-status fallback test",
"priority": 3,
"dependsOn": [
"S1"
],
"acceptanceCriteria": [
"All handleSignal calls in tests pass PhaseResult objects (no SignalKind strings)",
"New test: unrecognized status → blocked:transient fallback with warning log",
"tsc --noEmit passes",
"npm run test passes",
"npm run lint passes"
],
"passes": false,
"completedAt": null
}
]
}