---
name: rig-fetch-without-docs-port-hits-the-fleet-daemon
description: On a rig pair, any `spt fetch` (or served-URL dial) without SPT_DOCS_PORT set is answered by the RESIDENT fleet daemon on 5474 and 404s in a way that reads as "entry does not exist", not "wrong daemon" — releases#282.
metadata:
  type: project
---

2026-09-07 W2 gate (todlando measured, doyle ruled): `spt fetch` re-mints `http://localhost:<port>` from the CONFIGURED docs port (fetchverb ~:217 via `serveverb::node_and_port()`), discarding the port in the URL it was handed. A rig daemon on an ephemeral port therefore never receives its own fetch: the dial goes to 5474, the box's resident FLEET daemon answers, and the reply is `FETCH_FAILED: … HTTP 404` — indistinguishable from a missing entry. The exit-3 arm read exit 1 this way first.

**Why:** the served-URL port defect is releases#282 (backlog BUGFIX, filed 2026-09-07); until it lands every test and every field step on a rig must carry `SPT_DOCS_PORT=<rig port>` in the fetch shell. A 404 on a rig-pair fetch is "wrong daemon" until the env is proven set.

**How to apply:** before reading any rig fetch 404 as a registry miss, print the env the fetch child ran with and the port the rig daemon bound; the two must agree. Related: [[ephemeral-ports-flag-silently-beats-spt-docs-port]] (the rig flag eats the override — verify the BOUND port, not the env). Field §3 of GATE-W2-272-CHECKLIST.md carries the note.
