# Learning unfamiliar websites and widgets

Use this procedure inside Learn Mode for rendered web or desktop-web surfaces.

## Build the surface model

Capture:

- route, viewport, role, locale, feature flags, and initial state;
- visible text, labels, accessible names/roles/states, focus order, keyboard shortcuts, and help;
- DOM structure only as supporting evidence—custom controls may not expose their semantics correctly;
- enabled/disabled/hidden/loading/error/empty/selected/expanded states;
- navigation, overlays, focus traps, back/forward behavior, persistence, and recovery;
- requests, response classes, storage changes, console errors, and observable downstream effects.

For an unknown widget, determine:

1. what values/actions it accepts;
2. how input is committed, canceled, cleared, or undone;
3. its state transitions and forbidden transitions;
4. validation timing and feedback;
5. keyboard, pointer, touch, screen-reader, and responsive behavior;
6. persistence across refresh/navigation/session;
7. concurrency, retry, interruption, and stale-state behavior;
8. privacy, security, performance, and destructive boundaries.

## Probe order

Prefer cheap reversible probes:

1. focus, hover, expand, inspect help, and cancel;
2. enter one ordinary synthetic value without committing;
3. clear, undo, escape, or navigate away and return;
4. exact empty/min/max/just-outside boundary;
5. Unicode, emoji/emoticon, paste, composition, and autofill where the control accepts text;
6. double action, interrupted action, retry, refresh, back/forward, and two-view stale state;
7. role, viewport, locale, offline, or slow-response variation when risk justifies it.

Observe the UI and the request/response or storage consequence. A visual state alone does not prove persistence, authorization, or backend success.

For unfamiliar flows, discover a state graph rather than one happy-path recording. Record entry states, transitions, guards, alternate exits, recoverable failures, irreversible commits, completion oracle, and cleanup.

