# WEB019-LAB1 — learner instructions

This fixture is intentionally incomplete. Do not treat its visual right alignment as a correct RTL implementation.

1. From `WEB019-LAB1`, run `python run_checks.py --structure-only`. This checks the failure fixture only; it does not certify rendering.
2. Copy `learner/starter/` to a sibling directory named `learner/submission/`. Repair **submission**, not starter.
3. Record the logical baseline sequence: `actor → username → message → order code → numeric order ID → amount → completion`. The fixture deliberately includes a Latin username, an alphanumeric code, numeric-only order ID `2048`, amount-like value `1,250,000`, and punctuation.
4. Repair the owned Persian base-direction boundary structurally; do not reverse strings or DOM order. Classify dynamic values from their data contracts and isolate unknown/opposite-direction inline values when justified.
5. Run the repaired baseline in your own browser and record direct DOM/visual observations in `learner/evidence/learner_evidence.json`. Do not invent observations.
6. Run exactly one deliberate mutation with `python mutation_probe.py --mutation <no-dir|no-isolation|reverse-source>`. The tool uses `learner/submission/` by default and creates a disposable `mutated/` copy. Predict first, then observe, diagnose, repair the original submission, and re-observe.
7. Keep baseline, mutation, and changed-context transfer as **distinct evidence rows**. Solve the support-ticket transfer independently and mark that row `changed_context: true`.
8. State the tested environment and one residual limitation.
9. Run `python run_checks.py` for bounded completed-submission structure/evidence validation. Passing it is **not** browser or assistive-technology correctness.

`run_checks.py` never substitutes static checks for direct browser/AT evidence. Browser/AT statements belong only in learner-recorded evidence from a named environment.
