重构:终态判定不再为控制流留兜底分支
- turn_completion.rs 的 turn_terminal 两处 ShouldContinue 分支由 debug_assert + 回落账本终态 / host_dropped 改为 unreachable:控制流在返修循环与终态投影处已被过滤 - 同步收紧 turn_terminal 的文档说明,明确控制流不该也不能进入终态判定
This commit is contained in:
@@ -71,8 +71,9 @@ impl TurnCompletion {
|
||||
/// 阶段的账本读不出来时只有它可用。
|
||||
///
|
||||
/// 错误由 [`TurnError::classify`] 分成两层:`ShouldStop` 的载荷直接成失败终态;`ShouldContinue`
|
||||
/// (返修 / 复核要求继续)说明这一轮还没结束,正常不该走到这里(调用方在写终态之前就拦下了),
|
||||
/// 真漏进来也不伪造失败——落到账本给出的正常终态。
|
||||
/// (返修 / 复核要求继续)说明这一轮还没结束,在产生 / 消费它的那一层就被消化,
|
||||
/// `codex_app_server` 的终态投影也把它过滤成了 `None`。它不该、也不能进入终态判定:
|
||||
/// 漏进来就是上游缺陷,直接 `unreachable!`,不落任何终态。
|
||||
///
|
||||
/// 载荷在这一个出口从 typed 错误投影([`TurnError::classify`]):脱敏与截断也在那一处完成,
|
||||
/// Rust 侧没有第二个地方再拼它、也没有任何地方再解析它。
|
||||
@@ -98,10 +99,10 @@ pub(crate) fn turn_terminal(
|
||||
if let Some(error) = error {
|
||||
match error.classify(history_root) {
|
||||
TurnErrorClassified::ShouldStop(payload) => return TurnCompletion::Failed(payload),
|
||||
// 控制流:这一轮还没结束。写终态是调用方的事,正常在调用方那一层就被拦下;这里显式
|
||||
// 认账,不把"继续跑"重新压回静默失败。
|
||||
// 控制流:这一轮还没结束,不该走到终态判定。上游的返修循环与 `direct_turn_terminal_write`
|
||||
// 都已把它挡在外面;漏进来就是缺陷,直接炸出来,不落任何终态。
|
||||
TurnErrorClassified::ShouldContinue { detail } => {
|
||||
debug_assert!(false, "控制流错误不应进入终态判定:{detail}");
|
||||
unreachable!("控制流错误不应进入终态判定:{detail}")
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -114,7 +115,9 @@ pub(crate) fn turn_terminal(
|
||||
match error.classify(history_root) {
|
||||
TurnErrorClassified::ShouldStop(payload) => TurnCompletion::Failed(payload),
|
||||
// `Unclassified` 恒为真失败;这一臂写全只是把"分类层不允许静默"补齐。
|
||||
TurnErrorClassified::ShouldContinue { .. } => TurnCompletion::host_dropped(),
|
||||
TurnErrorClassified::ShouldContinue { .. } => {
|
||||
unreachable!("Unclassified 只可能是回合失败,不该分类成控制流")
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user