···6060- Detailed browser-smoke workflow, current interaction coverage, and the env-gated `prove` wrapper live in `docs/BROWSER_SMOKE.md`.
6161- Extraction work toward a cross-PDS standalone package now lives in the `atproto-smoke` repo, which owns the browser runtime, package CLI, example configs, and bring-your-own-account plus `perlsky` adapter helpers.
6262- `script/perlsky-browser-smoke` expects a standalone checkout at `../atproto-smoke` by default. Set `PERLSKY_BROWSER_SUITE_ROOT` to point it at any other checkout explicitly.
6363+- The lowest-friction local layout is to clone `atproto-smoke` next to `perlsky`, so both repos share the same parent directory.
6364- The shared smoke runtime now applies a bounded per-step timeout (`stepTimeoutMs`, default `120000`) so late browser stalls fail with artifacts instead of hanging forever.
64656566Moderation and labels:
+9
docs/BROWSER_SMOKE.md
···109109The wrapper now expects a standalone `atproto-smoke` checkout, either at the
110110default sibling path `../atproto-smoke` or via `PERLSKY_BROWSER_SUITE_ROOT`.
111111112112+The easiest local layout is:
113113+114114+```text
115115+.../perlsky
116116+.../atproto-smoke
117117+```
118118+119119+so the default sibling lookup works without extra configuration.
120120+112121## Notes
113122114123- The reusable dual-account path is intentionally conservative about account creation. Fresh actors are only created through explicit `bootstrap-*` commands.