fix(rectification): stop unwritten-evidence claims and same-cluster dasha false conflicts (BUG-635–640)
Host only says 记下了 after a real write; Mastra schema rejections fail closed. Ledger year keys no longer drop quality probes, dual-dasha agreement is per cluster, width uses cluster span, and public house tables follow the inference minute. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -156,8 +156,16 @@ def indistinguishable_width_minutes(candidates: Sequence[dict[str, Any]]) -> int
|
||||
return 0
|
||||
ranked = sorted(candidates, key=lambda row: int(row.get("rank") or 0))
|
||||
top = ranked[0]
|
||||
minutes = [value for value in (_clock_minutes(row.get("time")) for row in ranked) if value is not None]
|
||||
span = (max(minutes) - min(minutes) + 1) if minutes else 0
|
||||
starts: list[int] = []
|
||||
ends: list[int] = []
|
||||
for row in ranked:
|
||||
start = _clock_minutes(row.get("cluster_start") or row.get("time"))
|
||||
end = _clock_minutes(row.get("cluster_end") or row.get("time"))
|
||||
if start is not None:
|
||||
starts.append(start)
|
||||
if end is not None:
|
||||
ends.append(end)
|
||||
span = (max(ends) - min(starts) + 1) if starts and ends else 0
|
||||
tied = int(top.get("tied_minute_count") or 1)
|
||||
return max(tied, span, 1)
|
||||
|
||||
@@ -606,6 +614,7 @@ def build_decision_receipt(
|
||||
cluster_width_minutes=width,
|
||||
include_discriminators=int(request.get("minute_step") or 1) <= 1,
|
||||
column_times=_column_times_for_packet(request, candidate_decisions),
|
||||
clusters=candidate_decisions,
|
||||
)
|
||||
if packet["dasha_agreement"]["status"] == "conflict":
|
||||
if overall_confidence == "high":
|
||||
|
||||
Reference in New Issue
Block a user