{
  "summary": "Correction to prior proposed fix: broker_name cannot replace seed_socket_name because serving requests are handled on the distinct seed-control protocol. Preserve production discovery; repair fixture topology if its canonical seed-control listener is absent. Unconditional in-process bound-port access remains unsafe across production broker/brain processes.",
  "files": [
    {
      "path": "crates/spt-daemon/src/endpoint.rs:29-38",
      "description": "Seed-control and broker endpoints have distinct names and roles."
    },
    {
      "path": "crates/spt-daemon/src/seedmap.rs:159-184",
      "description": "Seed control verifies Brain hello and dispatches KIND_SERVE_REQUEST to servehost::handle."
    },
    {
      "path": "crates/spt-daemon/src/broker.rs:6091-6094,6421-6422",
      "description": "Broker command dispatch treats unsupported kinds as errors; no servehost/KIND_SERVE handler found."
    },
    {
      "path": "crates/spt-daemon/src/brainproc.rs:422-440",
      "description": "WEB dispatcher belongs to separate production brain child."
    },
    {
      "path": "crates/spt-daemon/src/webproxy.rs:519-527",
      "description": "Worker correctly needs cross-process seed-control discovery; every error remains hard."
    }
  ],
  "architecture": "Distinct channels: broker IPC carries stream/PTY operations; seed-control IPC carries serving requests. Both belong to daemon ownership, while production WEB workers run in a separate brain child. The listener's atomic port is only meaningful in its owner process.",
  "report": "This correction supersedes section 5's broker_name threading recommendation in my earlier report; the prior error-propagation and process-ownership findings stand.\n\nVerified source facts:\n- endpoint.rs:32-33 names seed control spt-daemon-seed-<home tag>.sock; 37-38 names broker spt-daemon-broker-<home tag>.sock.\n- seedmap.rs:159 receives/validates hello for Role::Brain; 182-184 routes serve_request through servehost::handle and writes the response. This is the actual server-side protocol path missing from the earlier consumer-only trace.\n- broker.rs has no KIND_SERVE, servehost, serve_request, or DocsStatus references. Alternate search located its command match at 6091 and fallback at 6421-6422: unknown command kind produces an error. Therefore directing docs_port to an already-known stream broker name does not solve discovery and can instead produce a hard unexpected-reply error.\n\nRevised fix boundary:\n1. If the isolated helper fixture starts only custom broker IPC and HTTP but not canonical seed control, supply the canonical seed-control listener plus a real broker-backed docs listener in the same owner process. This can be a fixture-only correction: production webproxy already uses the appropriate serving-control endpoint, and its hard failure is truthful when that control endpoint is absent.\n2. Do not replace IPC with bound_docs_port in the production worker. brainproc.rs:422-440 proves the process split, and daemon.rs:310-316 / docshost.rs:30,510-512 prove listener state belongs elsewhere.\n3. Do not redirect to broker_name without adding a deliberately designed typed status handler to broker protocol and updating both ends. That is a broader product change, not a narrow name correction, and is not needed merely to repair incomplete test topology.\n4. Reuse servehost::port_from_status unchanged for the semantic decision. None/zero, explicit refusal, or unrelated reply remain hard. CLI's absent/refused transport fallback remains unchanged and does not apply to WEB helper replies.\n\nMinimal existing single-host evidence seam remains docs_server_e2e.rs:102-131: absent seed-control connection exposes NotFound/ConnectionRefused, control without listener exposes Other, and real broker-backed ephemeral listener yields its exact bound port. No tests or processes were executed. Fixture topology provenance belongs to HelperRigChain/parent; no claim here that its runtime listener state was measured."
}
