def tried_before(query_vec, tags=None, role=None):
    candidates = vector_search(query_vec, top_k=10)

    for dr in candidates:
        meta = get_dr_metadata(dr["id"])
        if role and not meta["role_exposure"].get(role, False):
            continue
        if meta["lifecycle_state"] in ("rejected", "superseded"):
            return True, dr["id"], meta["statement"]
    return False, None, None
