fix(rectification): invite-first collect, holdout at 4 events, Skill 10.0.23 (BUG-646–648)

Stop domain-wheel collecting and age-band years in prompts. Ask until the training gate, then discriminate until convergence, then deliver a range plus a concrete follow-up. Reserve holdout only with four dated events.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Jesse_Chen
2026-09-11 01:43:02 +08:00
co-authored by Cursor
parent cb04529728
commit dd8f35f7ba
70 changed files with 2576 additions and 1183 deletions
+11 -4
View File
@@ -1,7 +1,7 @@
"""Per-case holdout reservation for birth-time rectification.
Reserve at least one dated event as soon as collection has two dated
events. Holdout evidence must not enter screening totals, candidate
Reserve a holdout only when collection already has four dated events.
Holdout evidence must not enter screening totals, candidate
scoring, or discriminator probe selection. The public AA sealed holdout
contract is a different file (`sealed_holdout.py`).
"""
@@ -13,7 +13,7 @@ from typing import Any
from scripts.rectification.candidate_contrast import event_year
MIN_EVENTS_TO_RESERVE_HOLDOUT = 2
MIN_EVENTS_TO_RESERVE_HOLDOUT = 4
_MONTH_OR_BETTER = frozenset({"day", "month"})
@@ -61,12 +61,19 @@ def pick_holdout_id(events: Sequence[dict[str, Any]] | None) -> str | None:
return _event_id(ranked[-1]) if ranked else None
def holdout_reservation_status(events: Sequence[dict[str, Any]] | None) -> str:
dated = dated_events(events)
if len(dated) < MIN_EVENTS_TO_RESERVE_HOLDOUT:
return "not_reserved_min_events"
return "reserved" if pick_holdout_id(events) else "not_reserved_min_events"
def sticky_holdout_id(
events: Sequence[dict[str, Any]] | None,
previous_holdout_id: str | None = None,
) -> str | None:
ids = {_event_id(event) for event in dated_events(events)}
if previous_holdout_id and previous_holdout_id in ids:
if previous_holdout_id and previous_holdout_id in ids and len(dated_events(events)) >= MIN_EVENTS_TO_RESERVE_HOLDOUT:
return previous_holdout_id
explicit = [
_event_id(event)