ok export headers exact ok export lists all 3 batch students ok Arabic name survives xlsx round-trip ok main import writes 3 rows ok grades stored ok every grade write audited ok identical file rejected ok only changed row rewritten ok audit has before/after ok rejects: bad header ok rejects: unknown student ok rejects: duplicate student ok rejects: mark out of range ok rejects: mark AND code ok rejects: bad code ok rejects: broken encoding ok failed imports wrote nothing ok failed imports are logged too ok second-round export = F(69) + Ab* only, not the B ok second round rejects passed student ok second round rejects codes ok second-round marks stored ok F(69) cleared by supplementary(75) → C* capped 2.00 ok untouched pass stays B ok Ab* substitute takes real grade (90 aviation = A) 25 passed, 0 failed