{
  "changed_files": [
    "crates/spt-daemon/src/docshost.rs",
    "crates/spt-daemon/src/notif.rs",
    "crates/spt-daemon/src/pump/update.rs"
  ],
  "implementation": "Added public docshost::live_docs_url() using strict seed-control docs_port discovery, OS hostname, and unchanged canonical docs_url. Consent producer accepts Option<&str> docs_base; pure rendering selects local changelog.html or exactly the existing release URL. Pump discovers only for NeedsConsent, before with_epoch. No configured-port guessing, listener fabrication, registry mutation, or transport changes.",
  "tests": [
    "notif::tests::consent_changelog_uses_the_discovered_node_local_docs",
    "notif::tests::consent_changelog_retains_release_url_without_live_docs",
    "notif::tests::consent_decision_produces_notif_only_when_gated (updated arguments; routing, no-consent, scope/coalescing assertions preserved; incidental wording/constant assertions removed)"
  ],
  "ownership_reasoning": "servehost::docs_port rejects unavailable/zero/old-broker replies; call() synchronously waits up to 10 seconds. Seedmap handles serve requests on independent per-connection threads in the broker process; DocsStatus returns broker-local atomic state before the serving-registry writer lock. RegistryHost::with_epoch holds the canonical epoch mutex throughout its closure. Discovery therefore belongs in the update worker before the lease, not in notification rendering/production or the brain's process-local atomic.",
  "references": "Requested LSP references before exported producer modification. Main reported first query timeout, successful retry showing both tests, lib re-export, and pump import/call, matching grep. All callers migrated; docs_url signature/body unchanged.",
  "scope": "Only GitHub link on this consent surface was CONSENT_CHANGELOG_URL, now retained solely as offline fallback. Added REQ-UPDATE-LOCAL-DOCS-LINKS implementation/unit tags.",
  "validation": "Not run: all builds/tests/formatters/linters/validation explicitly reserved for Main. No processes launched and no commit created."
}