Skip to content

feat: log observability, MCP release pipeline, and tech debt cleanup#95

Merged
maxholman merged 11 commits intomainfrom
feat/logs-and-cleanup
Mar 20, 2026
Merged

feat: log observability, MCP release pipeline, and tech debt cleanup#95
maxholman merged 11 commits intomainfrom
feat/logs-and-cleanup

Conversation

@maxholman
Copy link
Copy Markdown
Contributor

Summary

  • Log observability — bounded ring buffer (last 200 lines) captures tracing output and exposes it through all control interfaces (IPC, MCP, REPL, CLI, REST, OpenAPI)
  • MCP in release pipelinewallhack-mcp now built alongside wallhack-cli in CI for x64 glibc and arm64 targets
  • just build-range also builds MCP — single command rebuilds both VM binary and host MCP binary
  • clientsource rename in ICMP/UDP domain logic per naming conventions
  • Remove PskFailTracker — subscriber dedup handles the common case
  • neli 0.6 → 0.7 migration — builder API, private fields, synchronous socket module
  • TODO cleanup — 25+ items marked done from v0.11–v0.12 cycle, stale entries removed

How to verify

  • Build: just check passes (fmt, clippy slim+default, test, bench smoke, website lint+build)
  • Range: deploy and run wallhack logs via MCP — should show recent daemon output
  • CI: release workflow now produces wallhack-mcp-linux-x64 and wallhack-mcp-linux-arm64 assets
  • neli: route add/remove and local CIDR enumeration still work (range UAT)

🤖 Generated with Claude Code

maxholman and others added 11 commits March 20, 2026 11:24
Reduces the manual step of remembering to rebuild the MCP binary
after code changes during range development.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
MCP binary was previously only buildable from source. Now produced
alongside wallhack-cli for x64 glibc and arm64 targets.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…ervability

When something goes wrong (latency missing, peer disconnected, route
failing), there was no way to diagnose through the control plane
without SSH access to the daemon host. This adds a bounded ring buffer
(last 200 lines) that captures all tracing output and exposes it
through every control interface:

- Proto: LogsRequest/LogsResponse
- NodeApi: logs(count) method
- IPC dispatch
- MCP tool: logs (with lines parameter)
- REPL: logs [N]
- CLI: wallhack logs [-n N]
- REST: GET /logs?lines=N
- OpenAPI spec updated

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Auto-routing, ping removal, latency fix, channel sprawl dedup,
and all stale terminology renames verified and marked done.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Per naming conventions: "client" is prohibited in domain logic.
Renamed client_ip → source_ip, client_endpoint → source_endpoint,
client_port → source_port across icmp.rs, manager.rs, session.rs.
Also fixes duplicated doc comment in handler.rs.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
The SimpleSubscriber already deduplicates consecutive identical log
lines. Including the peer address in the warn message is sufficient —
the per-IP HashMap tracker added complexity without meaningful benefit.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
neli 0.7 makes struct fields private (accessor methods), replaces
struct literals with builders, moves NlSocketHandle to
socket::synchronous, and changes flag types. Also extracts a shared
recv_netlink_ack helper to deduplicate the route add/remove ACK
handling.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Marks Cargo.lock as binary for merge purposes so git never silently
auto-merges it — forces regeneration on conflict instead.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@maxholman maxholman merged commit 72043dd into main Mar 20, 2026
6 checks passed
@maxholman maxholman deleted the feat/logs-and-cleanup branch March 20, 2026 10:23
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant