# data & docx ok version is 1.1 ok hash present ok docx generated ok zip opens ok tokens replaced + escaped ok [Content_Types].xml present ok footer has per-user data # all languages docx ok docx fa user ok docx fa public ok docx en user ok docx en public ok docx ru user ok docx ru public ok docx uk user ok docx uk public ok docx es user ok docx es public ok docx uz user ok docx uz public ok docx pt user ok docx pt public ok docx de user ok docx de public ok docx it user ok docx it public ok docx fr user ok docx fr public ok docx tr user ok docx tr public ok docx he user ok docx he public ok docx ar user ok docx ar public ok docx zh user ok docx zh public ok docx id user ok docx id public ok docx sv user ok docx sv public ok docx ms user ok docx ms public ok docx nl user ok docx nl public ok docx hi user ok docx hi public ok docx ko user ok docx ko public ok docx vi user ok docx vi public # gate: who is locked ok verified user without acceptance needs contract ok await_deposit user is NOT gated ok admin never gated ok api: only profile allowed while gated ok api: ungated user all allowed # gate screen ok gate consumes a normal message ok screen: view + accept + support only ok screen shows masked national id (not full) ok gate consumes unknown callback ok ungated user passes gate # one-time announcement for already-verified users ok announced to the 2 verified users only ok recipients are 700 and 702 (not the unverified 701) ok announcement text says the contract is new + has the gate buttons ok notices recorded once per user # public file for non-verified ok public file sent to non-verified user ok public zip opens ok public file has NO placeholders and NO personal fields # view file ok one file sent ok PDF companion is a real PDF when sent ok file is a zip # accept: two steps ok confirm screen has final + back, and shows identity ok nothing recorded yet ok stale-version button does not record ok recorded once ok gate lifted after acceptance ok signed copy sent to user ok record has version/hash/doc id/masked nid ok identity stored encrypted & recoverable ok audit written # idempotent / append-only ok double tap does not duplicate ok UPDATE blocked by trigger ok DELETE blocked by trigger # non-verified cannot accept ok refused with explanation ok final button also refused ok menu offers view but not accept # kill switch / waive ok user 702 gated ok waive lifts gate ok global switch off lifts gate ok global switch on restores gate # identity duplicates (violations helper) ok same national id found # admin view ok admin text shows name + masked/clear nid + version ok admin text for unaccepted user # pdf + admin screen (v3.0.1) ok pdf is null or a real PDF ok admin-control unwraps adminKb (no double nesting) 93 passed, 0 failed