from datetime import datetime

def _dt(x): return datetime.fromisoformat(x) if x else None

def evaluate(c):
    quota_remaining=max(0,c['quota_limit']-c['quota_used'])
    req_t=_dt(c['request_time'])
    history_preserved=not bool(c.get('history_rewritten',False))
    unresolved=False
    active=0
    for r in c.get('reservations',[]):
        st=_dt(r.get('start')); ex=_dt(r.get('expiry'))
        if ex is None or r.get('release_condition') is None:
            unresolved=True
            continue
        if st <= req_t < ex:
            active += r['quantity']
    cap=c.get('capacity_allocatable')
    contention='UNKNOWN' if cap is None or unresolved else ('ENTITLEMENT_OVERBOOKED' if c.get('aggregate_entitlement_quota',0)>cap else 'CLEAR')
    cap_after=None if cap is None else max(0,cap-active)
    override_valid=bool(c.get('override_requested') and c.get('override_authority'))
    effective_remaining=quota_remaining + (c.get('override_extra_quota',0) if override_valid else 0)

    if c.get('evidence_age_days',0)>30:
        state,reason='STALE','DECISIVE_EVIDENCE_STALE'
    elif unresolved:
        state,reason='HOLD','RESERVATION_LIFECYCLE_INCOMPLETE'
    elif c.get('reported_reserved_quantity') != active:
        state,reason='DISPUTED','RESERVATION_LEDGER_MISMATCH'
    elif cap is None:
        state,reason='UNKNOWN','ALLOCATABLE_CAPACITY_UNKNOWN'
    elif c.get('override_requested') and not c.get('override_authority'):
        state,reason='BLOCKED','OVERRIDE_AUTHORITY_MISSING'
    elif c['request_quantity'] > effective_remaining:
        state,reason='REJECTED','QUOTA_HEADROOM_INSUFFICIENT'
    elif c['request_quantity'] > cap_after:
        state,reason='QUEUED','INSUFFICIENT_ALLOCATABLE_AFTER_RESERVATIONS'
    elif override_valid and c['request_quantity'] > quota_remaining:
        state,reason='ADMITTED_OVERRIDE','AUTHORIZED_QUOTA_OVERRIDE'
    else:
        state,reason='ADMITTED','QUOTA_AND_CAPACITY_GATES_PASS'
    return {'admission_state':state,'reason_code':reason,'quota_remaining':effective_remaining,'active_reserved_quantity':None if unresolved else active,'capacity_after_reservations':None if cap is None or unresolved else cap_after,'contention_state':contention,'override_applied':bool(state=='ADMITTED_OVERRIDE'),'history_preserved':history_preserved}
