# WEB019-LAB1 — راهنمای یادگیرنده

این fixture عمداً ناقص است. right alignment ظاهری آن را پیاده‌سازی صحیح RTL فرض نکنید.

1. از مسیر `WEB019-LAB1` دستور `python run_checks.py --structure-only` را اجرا کنید. این حالت فقط failure fixture را می‌سنجد و rendering را تأیید نمی‌کند.
2. پوشه `learner/starter/` را در کنار خودش با نام `learner/submission/` کپی کنید. فقط **submission** را repair کنید؛ starter باید دست‌نخورده بماند.
3. logical baseline sequence را ثبت کنید: `actor → username → message → order code → numeric order ID → amount → completion`. fixture عمداً Latin username، کد alphanumeric، شناسه فقط‌عددی `2048`، مقدار amount-like برابر `1,250,000` و punctuation دارد.
4. base-direction boundary فارسی را ساختاری repair کنید؛ string یا DOM را reverse نکنید. dynamic valueها را از data contract طبقه‌بندی کنید و unknown/opposite-direction inline valueها را در صورت نیاز isolate کنید.
5. baseline repairشده را در browser خود اجرا کنید و DOM/visual observation مستقیم را در `learner/evidence/learner_evidence.json` ثبت کنید. observation ساختگی ننویسید.
6. دقیقاً یک mutation را با `python mutation_probe.py --mutation <no-dir|no-isolation|reverse-source>` اجرا کنید. ابزار به‌صورت پیش‌فرض `learner/submission/` را می‌خواند و یک copy موقت در `mutated/` می‌سازد. ابتدا prediction، سپس observation، diagnosis، repair روی submission اصلی و re-observation را ثبت کنید.
7. baseline، mutation و changed-context transfer را در **سه evidence row مجزا** نگه دارید. support-ticket transfer را مستقل حل کنید و آن row را با `changed_context: true` علامت بزنید.
8. environment آزمایش و یک residual limitation را بنویسید.
9. برای validation محدود ساختار/evidence submission، `python run_checks.py` را اجرا کنید. PASS این دستور به معنی browser یا assistive-technology correctness نیست.

`run_checks.py` هیچ‌گاه static check را جایگزین browser/AT observation مستقیم نمی‌کند. هر ادعای browser/AT فقط باید از observation واقعی learner در environment نام‌گذاری‌شده بیاید.
