# WEB013-LAB1 — Learner instructions

## Goal
Repair a bounded filter primitive so its keyboard and focus contract is observable and defensible. The starter is intentionally broken; do not treat public structural checks as an accessibility verdict.

## Required path
1. Record the expected contract before editing.
2. Use the keyboard to enter, operate and dismiss the primitive.
3. Make focus visibly discernible.
4. Remove the pointer-only requirement from the custom action, preferably by choosing a native control when that preserves the product contract.
5. Implement or justify sensible focus restoration after dismissal.
6. Run one deliberate mutation with `mutation_probe.py`, predict the failure before running it, observe it, repair it and record the result.
7. Complete the changed-context transfer where the invoker may be removed.
8. Fill `evidence/learner_evidence.json` with direct observations and one residual limitation.

## Boundary
Do not redesign responsive layout or directional-key behavior. Those concerns belong to adjacent lessons unless they directly prevent this bounded keyboard/focus contract.

## Public checker modes
Run `python run_checks.py --structure-only` before repair to validate the supplied starter package. After completing the repair and evidence rows, run `python run_checks.py` without that flag. A PASS is structural/evidence completeness only; direct browser behavior must still be observed and recorded by you.
