{
  "status": "implemented",
  "file": "C:/Users/decid/Documents/projects/spt-core/.worktrees/310-local-update-docs/crates/spt/src/cli.rs",
  "changes": [
    "Pure applied, daemonless, and finish renderers accept optional canonical docs base and select changelog.html versus the existing RELEASES_URL fallback.",
    "Pure render_docs_landed_message selects local index.html versus the original directory display, preserving UPDATE_DOCS_LANDED.",
    "resolved_docs_url now accepts DocsUrlPolicy. LiveOnly consumes sibling docshost::live_docs_url; AllowOfflineFallback preserves the docs verb's existing node_and_port resolution unchanged.",
    "Added REQ-UPDATE-LOCAL-DOCS-LINKS implementation/unit evidence; removed duplicate release-URL and incidental www-host assertions while preserving version/restart coverage."
  ],
  "changed_production_callsites": [
    "report_apply_outcome: AppliedPending",
    "report_apply_outcome: AppliedDaemonless",
    "land_staged_docs: successful landing output",
    "cmd_update_apply_finish: successful restart output",
    "cmd_docs: existing fallback policy made explicit"
  ],
  "new_unit_filter": "update_messages_link_live_node_docs_or_preserve_offline_fallbacks",
  "new_unit_coverage": "Rendered changelog lines for applied, daemonless, fresh finish, already-installed finish, plus rendered docs-landed line; tests canonical encoded node prefix and nondefault port 43127, and exact preexisting offline fallbacks. No discovery IPC inside render tests.",
  "migrated_existing_units": [
    "applied_message_renders_semver_or_counter_fallback_and_states_applied",
    "resident_web_notice_is_shared_by_status_and_apply_only_for_incompatible_versions",
    "daemonless_apply_message_points_at_finish_or_start",
    "finish_message_states_fully_live_no_manual_restart"
  ],
  "consumer_findings": "Repository-wide UPDATE_DOCS_LANDED search found only CLI producer, traceable requirement descriptions, and crates/spt/tests/docs_bundle_e2e.rs marker-presence/absence checks. No parser consumes the directory payload, so no separate directory field was added. CLI release URL search found no additional release-tag human pointer; download/API URLs remain untouched.",
  "lsp": "No exported CLI symbols changed. Used repository searches for known callers; inherited hidden-worktree LSP indexing limitation remains, with no analyzer/compiler spawned.",
  "validation": "Not run: explicit assignment forbids builds/tests/formatters/linters/validation during concurrent integration. Main owns the integration smoke and unit execution. No commit."
}