Skip to content

v1.3.0 — Change Validation: a deterministic verdict on every change

Choose a tag to compare

@charlesaspe charlesaspe released this 04 Jul 05:04
eccb94e

NetCopilot can now judge a network change, not just describe it.

The trap this release closes: after a change, the success check is usually chosen by whoever (or whatever) made the change — a local ping, a quick glance — and it passes. From anywhere else, things are broken. An agent grading its own homework picks the test it can pass. The antidote is a verdict chosen by policy, before the fact, and computed deterministically — never by the model.

✅ Change validation — pass / warn / fail

Declare what was supposed to change; NetCopilot diffs the pre-change and post-change snapshots and judges the drift:

  • fail — a new critical/high finding appeared (regardless of scope), or any drift touches only devices outside the declared scope.
  • warn — new minor findings, drift with no declared scope, or changes that can't be attributed to a device — honest uncertainty, surfaced instead of silently dropped, and never escalated into a false fail.
  • pass — every change touches the declared scope and nothing new broke.

The policy is explicit and documented — the policy is the spec. No LLM anywhere in the verdict path: same inputs, same verdict, every time. Operational noise (the drift feature's volatile/info field contract) never affects the result, and resolved findings are reported as the good news they are.

One engine, three surfaces

  • MCP tool validate_change — the 26th tool. Declared scope as an argument; the verdict travels to any MCP client as structured content. It appeared on the external server surface with zero server changes — the registry-generated surface from v1.2.0 doing exactly what it promised.
  • CLI pipeline gatenetcopilot validate --after <run> [--before <run>] [--scope dev1,dev2] exits 0/1/2 = pass/warn/fail, so a change pipeline can gate on it directly:
    netcopilot validate --after $(post_change_run) --scope core-sw-01 || rollback
  • Dashboard banner — the Audit-tab drift view now opens with an automatic green/amber/red verdict and its reasons, above the change list it already showed. In-app menu (list_capabilities) updated accordingly.

Numbers

  • Tests: 963 → 1000 passed
  • MCP tools: 25 → 26 (external surface followed automatically)
  • New verdict engine: pure function, every policy rule pinned by its own test; verdict schema frozen (external consumers can build on it)

Full changelog: v1.2.0...v1.3.0