fix(rectification): deliver range cards on tied first place instead of falling back to collect (BUG-680/681/682)
Independent Staging Quality Gate / validate (push) Successful in 17m18s
Independent Staging Quality Gate / publish (push) Successful in 13m52s

Refresh persist failures no longer count as attempts. tied_first completes with a range before stillNeedNarrowing. Delivery narration and cards share DELIVERY_OUTCOMES. The question gap gets a delivered terminal so the unavailable copy does not appear after a range is given.
This commit is contained in:
jesse-ux
2026-09-14 15:41:04 +08:00
parent e59ef9fbfd
commit d5a8db0a4e
16 changed files with 644 additions and 9 deletions
@@ -305,6 +305,19 @@ test("session_outcome gates adopt cards independently of leaked can_adopt", () =
});
assert.equal(canShowRectificationSelectionCards(adopted), true);
assert.equal(canShowRectificationReadonlyRange(adopted), false);
const delivered = parseRectificationCandidateResult({
...camelCaseSnapshot,
session_outcome: "completed_with_range",
canAdopt: false,
can_adopt: false,
selectionAllowed: true,
credible_range: ["04:48", "05:07"],
});
// 原值: completed_with_range 且 canAdopt=false 不出卡、只出「再说一件」
// 新值: 出交付卡,不出采集范围行
// 原因: BUG-681 能说就能画
assert.equal(canShowRectificationSelectionCards(delivered), true);
assert.equal(canShowRectificationReadonlyRange(delivered), false);
});
test("parses inference marks from decisionReceipt.inference_state.candidates", () => {