Salvaged and re-implemented from PR #15:
- Deterministic environment shim (seeded Math.random, pinned-but-advancing
Date consistent across constructor/now/getTime/valueOf/toISOString) so
time/random-dependent pages capture reproducibly; epoch and seed are
recorded run metadata, performance.now stays real for motion sampling
- Post-snapshot lazy-asset discovery sweep for channels the walker misses:
noscript contents (DOMParser), inline style url(), data-background(-image),
img[loading=lazy] currentSrc
- Navigation gets a total 90s budget, an early bot-wall probe that aborts
with a pollution-style error instead of capturing garbage (WALL_RE now
shared with the validator gate), and one fresh-context retry scoped to
the initial nav on retryable failure classes only
505 tests pass (29 new), typecheck clean.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>