diff --git a/apps/vscode/src/runtime/reverse-rpc.ts b/apps/vscode/src/runtime/reverse-rpc.ts index 13a66f049..61ef0c5d5 100644 --- a/apps/vscode/src/runtime/reverse-rpc.ts +++ b/apps/vscode/src/runtime/reverse-rpc.ts @@ -60,7 +60,10 @@ export class ReverseRpcController { } else if (response === "approve") { resolve({ decision: "approved" }); } else { - resolve({ decision: "rejected" }); + // The label proves a user actually clicked No — a bare rejection is + // reserved for transport failures, which flow-gate provenance treats + // as unobserved and refuses to record as a human verdict. + resolve({ decision: "rejected", selectedLabel: "Reject" }); } return true; } diff --git a/packages/kap-server/src/routes/flow.ts b/packages/kap-server/src/routes/flow.ts index 3b43fff3a..aad349e2b 100644 --- a/packages/kap-server/src/routes/flow.ts +++ b/packages/kap-server/src/routes/flow.ts @@ -67,8 +67,8 @@ export function registerFlowRoutes(app: FlowRouteHost, deps: FlowRouteDeps): voi const payload: FlowStateResponse = { run: { active: run.active, - flow_id: run.flowId ?? gates.flowId, - task: run.task ?? gates.task, + flow_id: gates.flowId ?? run.flowId, + task: gates.task ?? run.task, stages: run.stages?.map((stage) => ({ id: stage.id, objective: stage.objective,