fix(rectification): collect dated events, then distinguish with conflict probes

Empty ledgers stay in natural-language collection. After the first dated
event, dasha conflict probes reverse-infer 前事 and block offer until
answered. Unique-minute confirmation stays closed at a representative
time; adopt reverse-verifies remaining probes. Records BUG-348–351.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Jesse_Chen
2026-08-22 10:37:40 +08:00
co-authored by Cursor
parent 92558ee61d
commit 9873ba420a
41 changed files with 2371 additions and 310 deletions
+6 -1
View File
@@ -170,7 +170,7 @@ def unique_minute_audit_row(allowed: bool) -> dict[str, str]:
return {
"technique": "唯一分钟确认",
"status": "blocked",
"note": "采用不等于确认唯一分钟。",
"note": "本会话以代表性时间收口,不确认唯一分钟。",
}
@@ -218,6 +218,9 @@ def apply_confirmation_decision(receipt: dict[str, Any]) -> dict[str, Any]:
receipt["confirmation_allowed"] = confirmation_allowed
receipt["confirm_allowed"] = confirmation_allowed
receipt["unique_minute_claim"] = False
exact["unique_minute_path"] = (
"awaiting_user_consent" if confirmation_allowed else "closed_at_representative"
)
exact["passed"] = confirmation_allowed
exact["fail_closed"] = True
exact["external_validation_status"] = vedastro_status
@@ -539,6 +542,7 @@ def build_decision_receipt(
"indistinguishable_width_minutes": width,
"max_confirmation_width_minutes": MAX_CONFIRMATION_WIDTH_MINUTES,
"external_validation_status": "not_evaluated",
"unique_minute_path": "closed_at_representative",
"required_scoreable_events": MIN_CONFIRMATION_EVENTS,
"required_scoreable_domains": MIN_CONFIRMATION_DOMAINS,
"reason": "engine_and_external_validation_must_explicitly_pass",
@@ -609,6 +613,7 @@ def build_decision_receipt(
"nakshatra_boundary": packet["nakshatra_boundary"],
"precision_stage": packet["precision_stage"],
"oos_blind_prompts": packet["oos_blind_prompts"],
"discriminating_event_probes": packet.get("discriminating_event_probes") or [],
"horary_observation": build_horary_observation(request),
"unique_minute_claim": False,
})