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
@@ -240,6 +240,15 @@ test("deliveryNarrationAllowed requires public can_adopt or a selectable range o
nextAction: "offer_provisional_range",
selectionAllowed: false,
}), false);
// 原值: completed_with_range 且 canAdopt=false 不能播交付
// 新值: selectionAllowed 且 outcome 在 DELIVERY_OUTCOMES 即可播
// 原因: BUG-681 能说就能画,completed_with_range / provisional_range 与卡片同真同假
assert.equal(deliveryNarrationAllowed({
canAdopt: false,
sessionOutcome: "completed_with_range",
nextAction: "complete_with_range",
selectionAllowed: true,
}), true);
});
test("duplicate_focus on the last collect ask does not emit delivery copy", async () => {