Skip to content

docs: create UPGRADE.md with canonical end-user update flow #4

Description

@commitconfirm

Parent

Part of #3 (umbrella: end-user update path for v1.0).

Summary

Create UPGRADE.md at the repo root documenting the canonical update
flow for MNM end users. Audience: network engineers running MNM on
their own Docker host. Assume Docker fluency at the "I can run
docker compose up -d" level but not deeper.

Required content

  • Pre-update checks: snapshot the host (Proxmox/ESXi/etc.) or at
    minimum back up the Nautobot DB volume; confirm working tree clean
    with git status; note any local modifications and decide what to
    do with them.
  • Standard update flow: git fetch --tags, git pull --ff-only
    (or git checkout <tag> for tagged releases), docker compose build, docker compose up -d, verification commands.
  • Selective service updates: how to rebuild only the changed
    service(s) when the CHANGELOG indicates a narrow change (e.g., the
    issue Block C migration miss: discovery.py:_snmp_get still uses pysnmp 6.x API #1 fix touched only the controller).
  • Verification steps: docker compose ps shows all containers
    healthy; targeted log greps for common failure modes
    (ImportError, Traceback, healthcheck failures); how to confirm
    the new image is the running container.
  • Rollback procedure: git checkout <previous-tag-or-sha>,
    rebuild, recreate. Note that data layer (Nautobot DB, Prometheus
    TSDB) is forward-compatible within v1.0.x — no downgrade migration
    needed.
  • Troubleshooting: common failure modes and their resolutions.
    Seed with: pull conflicts due to local modifications, image build
    failures due to disk space, healthcheck failures due to stale
    container references.
  • Update frequency guidance: how to know when an update matters
    (CHANGELOG entries flagged [security] or [bugfix] warrant
    prompt attention; [feature] and [chore] can wait for a
    convenient window).

Style

  • Match the audience tier guidance in .claude/CLAUDE.md (the doc's
    primary audience is network engineers; secondary is senior
    engineers reviewing the process).
  • Commands in copy-pasteable code blocks.
  • No real IPs, hostnames, or internal identifiers. Use RFC 5737
    placeholders if examples need addresses.

Acceptance criteria

  • UPGRADE.md exists at repo root
  • README links to it from the "Updates" or "Maintenance" section
    (create the section if absent)
  • The flow has been dry-run against a real install (the production
    host that hit issue Block C migration miss: discovery.py:_snmp_get still uses pysnmp 6.x API #1 is the natural candidate) and refined
    based on what was unclear
  • .claude/CLAUDE.md updated under Key Design Decisions Log:
    "End-user update path is git pull + selective rebuild,
    documented in UPGRADE.md. No registry-published images for v1.0
    (self-contained-appliance framing)."

Out of scope

  • The bin/update.sh wrapper (separate sub-issue)
  • Release tags (separate sub-issue) — but UPGRADE.md should
    reference tagged releases as the recommended pin once tags exist

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    documentationImprovements or additions to documentationrelease-engineeringRelease process, tagging, versioning, update flowv1.0-blockerBlocks v1.0 release

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions