Change Verification
by @vahagn-madatyan
Pre/post change verification with baseline capture, diff analysis, and rollback decision guidance across Cisco IOS-XE/NX-OS, Juniper JunOS, and Arista EOS. S...
clawhub install change-verificationπ About This Skill
name: change-verification description: >- Pre/post change verification with baseline capture, diff analysis, and rollback decision guidance across Cisco IOS-XE/NX-OS, Juniper JunOS, and Arista EOS. Structured around a single change event lifecycle β before, during, and after β with impact classification and rollback criteria. license: Apache-2.0 metadata: safety: read-write author: network-security-skills-suite version: "1.0.0" openclaw: '{"emoji":"π§","safetyTier":"read-write","requires":{"bins":["ssh"],"env":[]},"tags":["change","verification","rollback"],"mcpDependencies":["git-netops-mcp"],"egressEndpoints":[]}'
Change Verification
Event-driven change verification skill for structured change windows. Guides baseline capture before a change, provides change execution safety patterns, performs post-change diff analysis, and supports rollback decision-making when unexpected deviations are detected.
This skill covers a single change event lifecycle (before β during β
after). For ongoing configuration drift detection and compliance auditing, use
the config-management skill instead.
Commands are labeled [Cisco], [JunOS], or [EOS] where syntax diverges. Unlabeled statements apply to all three vendors.
> Safety Note β Read-Write Operations: This skill includes procedures that > modify device state during change execution and rollback phases. Steps that > write to devices are marked with β οΈ WRITE. Always confirm authorization, > change ticket approval, and maintenance window status before executing write > operations. Baseline capture and post-change verification steps are read-only > and safe to run at any time.
When to Use
Prerequisites
references/checklist-templates.md for per-change-type prerequisitesProcedure
Follow these steps sequentially for each change event. Steps 1β2 are always read-only. Steps 3β4 include write operations. Steps 5β6 are analytical and drive the rollback decision.
Step 1: Pre-Change Baseline Capture
Capture device state snapshots before any changes. Store outputs with timestamps for post-change comparison.
Routing state:
[Cisco]
show ip route summary
show ip bgp summary
show ip ospf neighbor
[JunOS]
show route summary
show bgp summary
show ospf neighbor
[EOS]
show ip route summary
show ip bgp summary
show ip ospf neighbor
Interface and adjacency state:
All vendors β capture interface status, error counters, and neighbor tables:
[Cisco]
show interfaces summary
show cdp neighbors
show ip arp
[JunOS]
show interfaces terse
show lldp neighbors
show arp no-resolve
[EOS]
show interfaces status
show lldp neighbors
show ip arp
Configuration and hardware:
[Cisco]
show running-config
show environment all
show inventory
[JunOS]
show configuration
show chassis environment
show chassis hardware
[EOS]
show running-config
show environment all
show inventory
β οΈ WRITE β Archive baseline config to persistent storage:
[Cisco] copy running-config flash:pre-change-[ticket]-[date].cfg
[JunOS] request system configuration save /var/tmp/pre-change-[ticket].conf
[EOS] copy running-config flash:pre-change-[ticket]-[date].cfg
Record baseline metrics for comparison: total route count, BGP peer count (Established), OSPF neighbor count (Full), interface error counters, and hardware sensor readings.
Step 2: Change Scope Documentation
Before executing any changes, document:
1. Change description β what configuration lines are being added, modified,
or removed
2. Expected impact β which peers will flap, which routes will shift, which
interfaces will bounce, expected duration of disruption
3. Rollback trigger criteria β specific thresholds that mandate rollback
(see Threshold Tables below)
4. Rollback procedure β exact commands to revert (see
references/cli-reference.md for vendor-specific rollback commands)
5. Success criteria β what "done" looks like: all baselines restored,
intended changes visible, no unexpected deviations
6. Soak period β how long to monitor after change before declaring success
Step 3: Change Execution
β οΈ WRITE β Apply changes using commit-confirm patterns when available.
[Cisco] β No native commit-confirm. Apply changes in config mode and
immediately verify. For bulk changes, use configure replace with a prepared
config file.
[JunOS] β Use commit confirmed [minutes] to auto-rollback if not
confirmed within the timer window. Confirm with commit after verification.
configure
... apply changes ...
commit confirmed 5
... verify ...
commit
[EOS] β Use configure session for atomic staged changes. Review before
committing.
configure session change-[ticket]
... apply changes ...
show session-config
commit
Staged rollout for multi-device changes: Apply to one device first, verify post-change state (Step 4), then proceed to remaining devices only after the first device passes all checks.
Step 4: Post-Change Verification
Re-capture all baseline metrics from Step 1 using identical commands. Perform a structured diff against pre-change baselines.
Key comparisons:
| Metric | Compare Against | Expected Outcome | |--------|----------------|------------------| | Route count | Pre-change summary | Within deviation threshold | | BGP peers Established | Pre-change peer list | All peers restored (or changed per plan) | | OSPF neighbors Full | Pre-change neighbor list | All adjacencies restored | | Interface errors | Pre-change counters | No new sustained errors | | Config diff | Archived pre-change config | Only intended lines changed |
Config diff verification:
[Cisco]
show archive config differences flash:pre-change-[ticket]-[date].cfg system:running-config
[JunOS]
show | compare rollback 1
[EOS]
diff running-config flash:pre-change-[ticket]-[date].cfg
Review every line in the diff output. Classify each changed line as expected (directly part of the change plan) or unexpected (not in the change scope).
Step 5: Impact Assessment
Classify all deviations from baseline into categories:
1. Expected β Intended: Changes that are the direct goal of the change window (e.g., new BGP peer appearing, old ACL removed). No action needed. 2. Expected β Side Effect: Changes caused by the intended change but not the primary goal (e.g., route count increase because a new peer is now advertising). Verify they are benign. 3. Unexpected β Minor: Deviations not related to the change scope but low severity (e.g., a single interface counter increment). Investigate but do not necessarily roll back. 4. Unexpected β Critical: Deviations indicating collateral damage (e.g., adjacency loss on an unrelated interface, route withdrawal not in change scope). Evaluate rollback immediately.
If any deviation is classified as Unexpected β Critical, proceed directly to Step 6 rollback evaluation.
Step 6: Rollback Decision
Evaluate whether to accept the change or roll back using the criteria below.
Rollback if ANY of these conditions are true:
Accept if ALL of these conditions are true:
β οΈ WRITE β If rolling back:
[Cisco] configure replace flash:pre-change-[ticket]-[date].cfg force
[JunOS] rollback 1 then commit
[EOS] configure replace flash:pre-change-[ticket]-[date].cfg
After rollback, re-run Step 4 post-change verification to confirm the device has returned to its pre-change state.
Threshold Tables
Acceptable Deviation Thresholds
| Metric | Normal Deviation | Warning | Rollback Trigger | |--------|-----------------|---------|------------------| | IPv4 route count | Β±2% of baseline | Β±5% of baseline | >10% or unplanned loss | | IPv6 route count | Β±2% of baseline | Β±5% of baseline | >10% or unplanned loss | | BGP Established peers | 0 lost (unless planned) | 1 lost (if in scope) | β₯1 lost outside scope | | OSPF Full adjacencies | 0 lost (unless planned) | Flap then recover <2 min | Lost >2 min | | Interface errors (new) | 0 new CRC/input errors | <10 in first 5 min | Sustained >10/min | | Interface flaps | 0 (unless planned bounce) | 1 flap on in-scope intf | Any flap outside scope |
Rollback Timing Thresholds
| Phase | Maximum Duration | Action if Exceeded | |-------|-----------------|-------------------| | Change execution | Per change ticket | Pause and escalate | | Post-change convergence | 5 minutes | Begin rollback assessment | | Adjacency re-establishment | 2 minutes per peer | Escalate if critical peer | | Route table stabilization | 3 minutes | Check for route oscillation | | Soak period (minor change) | 15 minutes | Declare success or investigate | | Soak period (major change) | 60 minutes | Declare success or investigate | | Rollback execution | 5 minutes | Escalate to senior engineer |
Decision Trees
Post-Change Diff Contains Unexpected Lines
Config diff shows unexpected changes
βββ Lines are in sections RELATED to change scope
β βββ Side effect of intended change (e.g., auto-generated route-map sequence)
β β βββ Classify as Expected β Side Effect β Document and accept
β βββ Unintended consequence (e.g., wrong interface affected)
β βββ Classify as Unexpected β Critical β Evaluate rollback
βββ Lines are in sections UNRELATED to change scope
βββ Timestamps, counters, or cosmetic changes (e.g., "Last configuration change")
β βββ Classify as Expected β Side Effect β Ignore
βββ Substantive config changes (e.g., ACL modified, route-map added)
βββ Classify as Unexpected β Critical β Immediate rollback
Adjacency Loss Detected Post-Change
Neighbor/peer no longer in expected state
βββ Device IS in the change scope
β βββ Interface was intentionally bounced per change plan
β β βββ Adjacency recovers within timing threshold
β β β βββ Expected β document recovery time
β β βββ Adjacency does NOT recover within threshold
β β βββ Investigate β Check interface state, cable, peer config
β βββ Interface was NOT intentionally bounced
β βββ Unexpected β Critical β Check for config error β Rollback if unresolved
βββ Device is NOT in the change scope
βββ Peer is on a device that IS in scope (far-end impact)
β βββ Expected side effect β Verify peer recovers within threshold
βββ Peer is on a device NOT in scope (unrelated)
βββ Unexpected β Critical β Unrelated failure, separate investigation
Route Count Deviation Outside Normal Threshold
Route count differs from baseline beyond Β±2%
βββ Change plan includes prefix addition or removal
β βββ Deviation direction matches plan (added routes = count increase)
β β βββ Expected β verify exact prefix matches plan
β βββ Deviation direction opposes plan (planned addition but count decreased)
β βββ Unexpected β Critical β Check BGP/OSPF process, peer state
βββ Change plan does NOT include routing changes
β βββ Deviation is <5% and routes are from in-scope device peers
β β βββ Warning β likely convergence artifact β Monitor for 3 min
β βββ Deviation is >5% OR routes from out-of-scope sources
β βββ Unexpected β Critical β Evaluate rollback
βββ Route oscillation detected (count fluctuating)
βββ Unexpected β Critical β Routing loop or flapping β Immediate rollback
Report Template
# Change Verification Report β [Ticket ID]Change Summary
Ticket: [ID]
Date/Time: [Start] β [End]
Devices: [list]
Change Type: [routing | switching | security | upgrade | other]
Executed By: [name/team] Pre-Change Baseline
Route count (IPv4/IPv6): [count]
BGP peers Established: [count]
OSPF adjacencies Full: [count]
Interface errors (notable): [any]
Config archived to: [location] Change Execution
Method: [manual | commit-confirm | session | replace]
Duration: [minutes]
Issues during execution: [none | description] Post-Change Verification
Route count (IPv4/IPv6): [count] (Ξ [change])
BGP peers Established: [count] (Ξ [change])
OSPF adjacencies Full: [count] (Ξ [change])
Interface errors (new): [count]
Config diff lines: [expected: N, unexpected: N] Impact Assessment
Expected β Intended: [list]
Expected β Side Effect: [list]
Unexpected β Minor: [list or none]
Unexpected β Critical: [list or none] Decision
Result: [ACCEPTED | ROLLED BACK | ESCALATED]
Rationale: [reason]
Soak period: [duration, outcome] Action Items
[ ] [any follow-up tasks]
Troubleshooting
Baseline capture commands fail or return incomplete output
terminal length 0 [Cisco/EOS] or
set cli screen-length 0 [JunOS] before capture.
show processes cpushow system processes extensive [JunOS] /
show processes top [EOS] to verify.
Config diff shows excessive noise
! Last configuration change at ...).
show | compare rollback 1 gives clean structured diffs. Onshow archive config differences may include line-order
differences that are not real changes β focus on substantive config lines.
references/checklist-templates.md checklists to focus verification onAdjacency does not recover after expected bounce
show interfaces [intf] β look for down/down vsup/down to distinguish physical vs protocol issues.
Rollback command fails or produces unexpected state
configure replace requires the IOS archive feature to berollback N may fail if the commit history has been cleared orshow system commit to verify available rollback points.
configure replace requires the replacement file to be a completeshow running-config capture.
Change window time exceeded before verification completes
β‘ When to Use
βοΈ Configuration
references/checklist-templates.md for per-change-type prerequisitesπ Tips & Best Practices
Baseline capture commands fail or return incomplete output
terminal length 0 [Cisco/EOS] or
set cli screen-length 0 [JunOS] before capture.
show processes cpushow system processes extensive [JunOS] /
show processes top [EOS] to verify.
Config diff shows excessive noise
! Last configuration change at ...).
show | compare rollback 1 gives clean structured diffs. Onshow archive config differences may include line-order
differences that are not real changes β focus on substantive config lines.
references/checklist-templates.md checklists to focus verification onAdjacency does not recover after expected bounce
show interfaces [intf] β look for down/down vsup/down to distinguish physical vs protocol issues.
Rollback command fails or produces unexpected state
configure replace requires the IOS archive feature to berollback N may fail if the commit history has been cleared orshow system commit to verify available rollback points.
configure replace requires the replacement file to be a completeshow running-config capture.