选择组的出口选择要走到落地:恰发一口,随放行一并确认

A6 的输出是**选择组**(negotiation: won / revise / lost),回传协议里本来就有
`selectedPorts`,human-tool 也接住了 —— 但落地那一步硬写 `selectedPorts: {}`,
选择从未抵达。结果:放行了、台账写了,却「发射输出口:(无)」,
G4 异或网关拿不到 outcome,整条流悄无声息地停住。

按 verdict 同样的路子把它串起来:人事件载荷 → 末步运行时 → 谱走完时报上去 →
落地收敛时照它发射。

gates: tsc / eslint / depcruise / 399 测试 全绿

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KeDBx2PHLavbURXB8LJJ7m
This commit is contained in:
2026-07-27 05:34:13 +08:00
co-authored by Claude Opus 5
parent 3af6252394
commit 691c61b6b8
7 changed files with 44 additions and 4 deletions
+2 -1
View File
@@ -414,6 +414,7 @@ export function wireEngines(deps: EngineWiringDeps): EngineWiring {
...(outcome.blockedReason === undefined ? {} : { reason: outcome.blockedReason }),
// 谱走完时把放行裁决带上来 —— 完成只出自放行通过
...(outcome.released === undefined ? {} : { released: outcome.released }),
...(outcome.selectedPorts === undefined ? {} : { selectedPorts: outcome.selectedPorts }),
};
},
onEvent: async (taskId, event) => {
@@ -433,7 +434,7 @@ export function wireEngines(deps: EngineWiringDeps): EngineWiring {
taskId: input.taskId,
ownerId: input.ownerId,
humanCallCap: input.humanCallCap,
selectedPorts: {},
selectedPorts: input.selectedPorts,
});
return {
converged: outcome.verdict.kind === 'converged',