Scope
The unchanged strict full-VM js/web/fetch/fetch.test.ts fixture exposes two remaining fetch option gaps:
- maxRedirects: 2 resolves a /hop/0 -> /hop/4 chain instead of rejecting after the configured limit.
- Negative maxRedirects values resolve instead of throwing during option validation.
Pinned Bun passes both contracts. Home currently reports 346 pass / 4 fail / 7,423 assertions for the complete 350-test file; these are two of the four failures.
Completion boundary
- Port the production FetchOptions parsing/validation and native HTTP redirect budget semantics.
- Preserve the unchanged upstream fixture, redirect workload, assertions, and deadlines.
- Verify with HOME_NATIVE_VM=1 and HOME_CORPUS_FULL_VM=1; adapter-mode output is not completion evidence.
- Add focused native coverage for zero, negative, exact-limit, and over-limit redirect chains.
Tracked from #66. No skip, assertion rewrite, deadline extension, or harness substitution is acceptable.