"""Authored token-deletion audit; deliberate bad lists, no semantic classifier."""
import json
PAIRS=[('ارسال رایگان است','ارسال رایگان نیست'),('پرداخت فقط بعد از تایید','پرداخت قبل از تایید'),('لغو را انجام بده','لغو را انجام نده')]
BAD={'است','نیست','فقط','بعد','قبل','از','را','بده','نده'}
PROTECTED={'نیست','فقط','بعد','قبل','نده'}
def transform(text,stop):
    tokens=text.split();audit=[{'token_index':i,'token':t,'removed':t in stop} for i,t in enumerate(tokens)]
    kept=[row['token'] for row in audit if not row['removed']]
    assert kept==[tokens[row['token_index']] for row in audit if not row['removed']]
    return {'tokens':tokens,'output_tokens':kept,'audit':audit}
def demo():
    records=[];bad_collisions=protected_collisions=0
    for a,b in PAIRS:
        bad=[transform(t,BAD) for t in [a,b]];protected=[transform(t,BAD-PROTECTED) for t in [a,b]]
        bc=bad[0]['output_tokens']==bad[1]['output_tokens'];pc=protected[0]['output_tokens']==protected[1]['output_tokens']
        bad_collisions+=bc;protected_collisions+=pc
        records.append({'authored_pair':[a,b],'bad_list_results':bad,'protected_list_results':protected,'bad_tokens_identical':bc,'protected_tokens_identical':pc})
    assert bad_collisions==3 and protected_collisions==0
    assert transform('نیستند نیست',{'نیست'})['output_tokens']==['نیستند']
    assert transform('می‌کنم',BAD)['tokens']==['می‌کنم']
    return {'bad_list_is_deliberately_authored_not_library_default':True,'bad_stop_tokens':sorted(BAD),'protected_tokens':sorted(PROTECTED),'tokenization':'str.split whitespace; no Unicode normalization or morphology','records':records,'bad_collision_pairs':bad_collisions,'protected_collision_pairs':protected_collisions,'substring_and_ZWNJ_checks':2,'meaning_classified_by_code':False,'downstream_model_quality_tested':False}
if __name__=='__main__':print(json.dumps(demo(),ensure_ascii=False,indent=2))
