You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
- /api/traceroute distinguishes ENOENT from other failures and now also
returns install_command (sudo apt-get/dnf/pacman/zypper install -y
traceroute) so the UI's copy-paste fallback is correct on RHEL / Arch
/ SUSE, not just Debian/Ubuntu.
- WolfRouter Trace tab uses install_command for the manual fallback;
defaults to apt only if the backend didn't send one (older nodes).
- System Check page surfaces the missing traceroute binary proactively
with a one-click Install button, alongside tcpdump/conntrack/etc.
- installer::packages gains a "traceroute" mapping for all four distro
families plus unit tests pinning the mapping (so a future PACKAGES
refactor can't silently drop it).
- CLAUDE.md gains a "Quality Bar — The Anthropic Test" section that
ties the existing global no-TODO / no-guess / Codex-review rules
together as a single quality gate.
Reported by Adam Cogswell 2026-04-30: Visual TraceRoute tab failing on
Ubuntu minimal images that ship without traceroute, with no in-app way
to fix it.
Copy file name to clipboardExpand all lines: CLAUDE.md
+15Lines changed: 15 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -67,6 +67,21 @@ All frontend code lives in `web/`:
67
67
68
68
**Serde conventions**: All structs use `#[serde(rename_all = "snake_case")]` for enums. Fields that may be absent from older JSON configs need `#[serde(default)]`. The frontend sends/receives snake_case JSON matching Rust field names.
69
69
70
+
## Quality Bar — The Anthropic Test
71
+
72
+
**Every change must meet the bar Anthropic PBC themselves would hold this code to if they were shipping it.** Before declaring any work done, ask: *"If Anthropic engineers had to ship this exact diff under their name, would they?"* If the honest answer is "no" or "not quite", the work is not done.
73
+
74
+
Concretely, this means:
75
+
-**No half-measures.** All branches implemented, all error paths handled, all edge cases addressed. If three platforms exist (Proxmox/libvirt/native), all three work — not two-and-a-stub.
76
+
-**No guessed values.** Every constant, ID, format, and protocol detail comes from reading the source — never from memory or "this looks right".
77
+
-**No dead code, no TODOs, no "follow-up later".** Finish the work or raise the scope question explicitly *before* writing the partial version.
78
+
-**Re-read the diff before declaring done.** Closure bugs, async-without-await, dead variables, unused branches — catch them yourself, don't ship them for Codex/review to find.
79
+
-**Be honest about what was tested.** Compile-passes ≠ feature-works. Don't claim "production-ready" without exercising the actual code path. Surface known untested paths in the closing summary.
80
+
-**The user-facing surface matters as much as the code.** Visible feedback for user actions, accessible interactions, no silent failures. A correct backend with a broken UX is not shipped quality.
81
+
-**Defaults must be safe.** Public surfaces (status pages, logs, error messages) never leak internals, credentials, AI output, or host data unless explicitly intended.
82
+
83
+
This rule overrides "ship it fast" instincts. If the bar isn't met, say so plainly and either finish the work or stop and ask.
84
+
70
85
## Important Conventions
71
86
72
87
- All Rust source files start with the copyright header (`// Written by Paul Clevett` / `// (C)Copyright Wolf Software Systems Ltd`)
let status = if found {DepStatus::Ok}else{DepStatus::Missing};
512
+
let detail = if found {
513
+
"Installed — Visual TraceRoute tab in WolfRouter renders the path map.".into()
514
+
}else{
515
+
"Not installed — the WolfRouter Visual TraceRoute tab will fail. Common on Ubuntu minimal / cloud images that omit it from the default package set.".into()
0 commit comments