Change control

The intended change-control loop, fully scriptable:

POST /api/bng/snapshots               {"name": "pre-change-4412"}
    → capture and verify

  … apply the change, through /v1/* or the wizard …

GET  /api/bng/snapshots/{id}/diff
    → confirm exactly what changed, and whether a reboot is implied

  … if the change must be reverted …

POST /api/bng/snapshots/{id}/restore  {"dry_run": true}
    → review the step plan
POST /api/bng/snapshots/{id}/restore  {"confirm": true}
    → apply; expect 200, or 207 with a per-step report
GET  /api/bng/snapshots/{id}/diff
    → confirm convergence

Tag snapshots that must survive automatic pruning with golden.