"""Redemption eligibility and identity use exhausted windows, never idle model clocks."""


def _number(value):
    try:
        return float(value)
    except (TypeError, ValueError, OverflowError):
        return 0


def reset_windows(usage: dict, threshold: int) -> tuple[bool, list[int]]:
    finished, resets, stack = False, set(), [usage]
    while stack:
        node = stack.pop()
        if isinstance(node, list):
            stack.extend(node)
            continue
        if not isinstance(node, dict):
            continue
        hard_limit = node.get("limit_reached") is True or node.get("allowed") is False
        finished = finished or hard_limit
        windows = [node] if _number(node.get("used_percent")) >= threshold else []
        if hard_limit:
            reported = [node[key] for key in ("primary_window", "secondary_window")
                        if isinstance(node.get(key), dict)]
            peak = max((_number(window.get("used_percent")) for window in reported), default=0)
            windows.extend(window for window in reported if _number(window.get("used_percent")) == peak)
        for window in windows:
            try:
                reset = int(float(window.get("reset_at")))
                if reset > 0:
                    resets.add(reset)
            except (TypeError, ValueError, OverflowError):
                pass
        stack.extend(node.values())
    return finished, sorted(resets)
