def evaluate(c):
    required=['incident_id','failing_input_hash','expected_oracle','actual_result','environment_fingerprint','dependency_lock','fixture_id','trace_id','boundary_owner','provenance_ref']
    missing=[k for k in required if not c.get(k)]
    environment_match=(c.get('environment_fingerprint')==c.get('failure_environment'))
    oracle_stable=bool(c.get('oracle_stable'))
    bisect_ready=bool(c.get('last_known_good') and c.get('first_bad_candidate') and c.get('suspect_range') and oracle_stable and int(c.get('changed_variables') or 0)==1)
    integration_required=False
    state='REPRODUCED'; reason='EVIDENCE_PACKET_CLOSED'
    owner=c.get('boundary_owner') or 'UNKNOWN'
    reproducible=bool(c.get('scripted_reproduces') or c.get('real_provider_reproduces'))
    if c.get('policy_blocked'):
        state='BLOCKED'; reason='POLICY_BLOCK'
    elif int(c.get('evidence_age_days') or 0)>45:
        state='STALE'; reason='STALE_DIAGNOSTIC_EVIDENCE'
    elif missing:
        state='UNKNOWN'; reason='DECISIVE_EVIDENCE_MISSING'
    elif int(c.get('changed_variables') or 0)>1:
        state='INCONCLUSIVE'; reason='MULTIPLE_VARIABLES_CHANGED'
    elif not oracle_stable:
        state='INCONCLUSIVE'; reason='FLAKY_ORACLE'
    elif not environment_match and c.get('isolation_level')!='SCRIPTED_PROVIDER_DOUBLE_ONLY':
        state='HOLD'; reason='ENVIRONMENT_FINGERPRINT_MISMATCH'
    elif owner in {'SANDBOX_PROVIDER','MODEL_PROVIDER','NETWORK/PROTOCOL'} and c.get('isolation_level')=='SCRIPTED_PROVIDER_DOUBLE_ONLY':
        state='EXTERNAL_UNTRUSTED'; reason='SCRIPTED_DOUBLE_CANNOT_PROVE_PROVIDER_BEHAVIOR'; integration_required=True; reproducible=False
    elif c.get('real_provider_reproduces') and not c.get('scripted_reproduces'):
        state='HOLD'; reason='REAL_PROVIDER_BOUNDARY_REQUIRES_INTEGRATION_REPRO'; integration_required=True; owner='SANDBOX_PROVIDER'
    elif not reproducible:
        state='HOLD'; reason='FAILURE_NOT_REPRODUCED'
    return {'diagnostic_state':state,'boundary_owner':owner,'reproducible':reproducible,'oracle_stable':oracle_stable,'environment_match':environment_match,'bisect_ready':bisect_ready,'integration_required':integration_required,'control_reason':reason}
