Skip to content

History

Revisions

  • Document plugin-owned Prometheus metrics per plugin Add a Metrics section to each of the six plugin pages whose plugin registers its own counters and gauges through ConfigureMetrics. Each section lists the exact metric names, types, and meanings taken from the plugin source (not invented). - bgp-rib: ze_rib_routes_in/out_total, per-peer vectors, per-peer/ family insert/withdrawal counters, plus attribute-pool stats. Also adds a short Route replay on reconnect note pointing at the three-bug fix from the recent pass (direction routing, missing WireUpdate, text-codec format mismatch). - bgp-watchdog: peers_up, route_announcements_total, route_withdrawals_total. - bgp-rpki: vrps_cached, sessions_active, validation_outcomes_total{result}. - bgp-persist: routes_stored, peers_tracked, route_replays_total. - fib-kernel: routes_installed, route_installs/updates/removals_total, errors_total{operation}. - sysrib: routes_best, route_changes_total{action}, events_received_total. go-plugins.md, plugins.md, and telemetry.md: add bgp-rib to the list of plugins that ship ConfigureMetrics (was previously listed as five, now six). All metric names verified against register.go / *.go sources. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

    @thomas-mangin thomas-mangin committed Apr 11, 2026
    7377780
  • Sweep stale peer syntax across untouched wiki pages Pre-existing debt from before the session/connection YANG refactor: 17 pages were still showing the old flat syntax peer upstream { remote { ip 10.0.0.1; as 65001; } local { as 65000; } family { ... } } which has not been valid in the schema for a while. YANG requires connection/remote/ip, session/asn/local, session/asn/remote, and session/family/*. Anyone copying these examples would hit validator errors. Converted all 27 occurrences across the following pages to the canonical form: add-path, address-families, bgp-filter-community, bgp-rs, community-filters, configuration-bgp-role, deprecated-options, exabgp-migration, exabgp-migration-walkthrough, fib, flowspec-injection, graceful-restart, healthcheck, route-server-at-an-ixp, rpki, transit-edge-with-rpki, upgrade-and-restart Also folded in a couple of related cleanups while touching these files: bgp-filter-community.md dropped the old "redistribution {}" block name and aligned its external-block alias (community) with the filter references (community:scrub) so the example is internally consistent. deprecated-options.md's "After" blocks now actually show the current syntax. Brace balance verified on every touched file, check-links.go reports all links OK. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

    @thomas-mangin thomas-mangin committed Apr 11, 2026
    a679043
  • Critical-review fixes: correct show uptime, rename syntax, and stale examples Self-review of the wiki-update pass caught several factual errors and fabricated sample outputs. Fixes: - show uptime is daemon start-time + duration, not per-peer uptime. Corrected in show-commands.md, peers.md verification section, and command-reference.md (moved from Peers group to Daemon group). - rename syntax is "rename <path> <old-key> to <new-key>" with a mandatory "to" keyword (JunOS style), not "rename <path> <new-key>" as previously documented in editor-workflow.md. - Removed the unverified claim that rename preserves live session state. rename is a config-tree operation; runtime reconcile behaviour is implementation-dependent and was not checked. - Added the insert ambiguity gotcha (values literally named first / last / before / after collide with position keywords). - Added the copy verb (deep-copy a list entry to a new key, same "to" syntax as rename) -- previously undocumented. - show interface brief / counters: dropped fabricated sample tables and replaced with a description of the fields and command forms. - Fixed stale peer syntax (remote { ip; as; }) inside code blocks on pages this pass touched: redistribution.md, editor-workflow.md, go-plugins.md, cli-tour.md. All now use the canonical connection { remote { ip } } + session { asn } form. - Replaced "leaf-pass" placeholder filter name in peers.md with <filter-name>. - gRPC Python example: simplified the import path to a generic form, noting that the exact package layout depends on protoc invocation. check-links.go reports all links OK. Broader stale peer syntax still exists on pages not touched this pass (cli.md, bgp-rs.md, blueprints, graceful-restart.md, rpki.md, etc.) -- out of scope for this cleanup but flagged for a future sweep. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

    @thomas-mangin thomas-mangin committed Apr 11, 2026
    a618fa0
  • Note plugin-owned metrics in plugins.md and bump .source-commit plugins.md: add a pointer from the plugin-health-metrics section to the new Go-plugins metrics API, listing the five shipped examples. .source-commit: bump from 80b7b7d to 7fcc8083, the range this wiki update pass covers. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

    @thomas-mangin thomas-mangin committed Apr 11, 2026
    fdaa8ab
  • Refresh comparison and feature inventory for new API and multipath comparison.md: five surfaces line now calls out REST + gRPC sharing one engine. Multipath bullet updated from "partial" to reflect the new bgp/multipath block (maximum-paths, relax-as-path). feature-inventory.md: split REST API row into REST API (dedicated server on 8081, /api/v1/*, Swagger UI, Bearer auth) and gRPC API (50051, ze.api.v1 services, reflection, TLS). The old claim about REST being content-negotiated on the same server as the web UI described the previous design. Source commit: 7fcc8083 (main repo). Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

    @thomas-mangin thomas-mangin committed Apr 11, 2026
    4d75a98
  • Refresh Home, what-is-ze, and sidebar for new surfaces Home.md / what-is-ze.md: mention gRPC alongside REST when listing the five operator surfaces, and call out the new gokrazy appliance build. _Sidebar.md: add Appliance under First Steps, add gRPC API under Interfaces, and rename the Redistribution sidebar entry to Route Filters (page content was rewritten to the filter chain model). Source commit: 7fcc8083 (main repo). Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

    @thomas-mangin thomas-mangin committed Apr 11, 2026
    bbf5c50
  • Update building and loop pages for proto toolchain and filter type building.md: add a Protocol buffer toolchain section covering make ze-setup (installs protoc-gen-go and protoc-gen-go-grpc) and the need for protoc from the system package manager. Add a Gokrazy VM appliance section pointing at the new appliance page. loop.md: clarify loop detection is now configured via the loop-detection filter type under bgp/policy (allow-own-as, cluster-id), with auto-population into every peer's import chain. Link to the route filters page. Note the session/cluster-id and loop-detection/cluster-id sync behaviour. Source commit: 7fcc8083 (main repo). Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

    @thomas-mangin thomas-mangin committed Apr 11, 2026
    69e831f
  • Document plugin-owned Prometheus metrics Go plugins can now register their own Prometheus metrics through a ConfigureMetrics callback on the Registration. The engine calls it with a metrics.Registry before RunEngine; the plugin declares its counters and gauges and holds them in package-level state. go-plugins.md: add a Prometheus metrics section with a code example and the ze_{scope}_{subject}_{detail} naming convention. List the five shipped examples (bgp-watchdog, bgp-rpki, bgp-persist, fib-kernel, sysrib). telemetry.md: split the exposed-metrics section into engine metrics and plugin-owned metrics with a pointer to go-plugins.md. Source commit: 7fcc8083 (main repo). Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

    @thomas-mangin thomas-mangin committed Apr 11, 2026
    0b83129
  • Document new CLI editor verbs and ops commands editor-workflow.md: add an Editing list entries section covering the new insert, rename, and deactivate/activate verbs. insert handles ordered leaf-lists with first/last/before/after positions (main use case: filter chains). rename renames a list entry in place preserving all children. deactivate/activate add and remove the inactive: prefix on a specific leaf-list value. Update the command reference table. show-commands.md: add show uptime (all-peer uptime snapshot), show interface brief and show interface <name> counters, and a Connectivity tests section for resolve ping / resolve traceroute. command-reference.md: add the new commands to the runtime table and expand the ze resolve section with ping and traceroute flags. Source commit: 7fcc8083 (main repo). Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

    @thomas-mangin thomas-mangin committed Apr 11, 2026
    178649e
  • Update policies and route-reflection for filter chain + iBGP RR policies.md: drop the rfc:no-self-as / rfc:bogon-check mandatory- default-user three-tier model. Loop detection is now a tunable loop-detection filter type; role enforcement lives in the role plugin and is not in the filter chain. Update examples to the new filter {} block syntax and link to the session-policy section on peers.md for session-level knobs (community/send, AS override, etc.). route-reflection.md: remove the "Ze does not implement a route reflector" claim and add a dedicated iBGP Route Reflection section covering session/route-reflector-client, session/cluster-id, ORIGINATOR_ID / CLUSTER_LIST handling, client vs non-client forwarding, and cluster-id sync with the loop-detection filter. Update all route-server examples to the connection/session YANG paths and add a comparison table for RR vs RS. Source commit: 7fcc8083 (main repo). Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

    @thomas-mangin thomas-mangin committed Apr 11, 2026
    5e411cb
  • Update peers.md and bgp.md for session policy and multipath peers.md: rewrite to the canonical connection/session YANG paths (connection/remote/ip, session/asn/local|remote, session/family/*). Add a new Session policy section covering route-reflector-client, cluster-id, next-hop auto/self/unchanged/<ip>, as-override, asn/local-options (no-prepend, replace-as), community/send, and per-family default-originate with default-originate-filter. Fold the filter chain reference to redistribution.md. Update required-fields table and common-problems diagnostics to match the new paths. bgp.md: fix the minimal example to current syntax and add a Multipath section covering maximum-paths and relax-as-path under bgp/multipath. Source commit: 7fcc8083 (main repo). Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

    @thomas-mangin thomas-mangin committed Apr 11, 2026
    74e29b0
  • Add appliance page for the gokrazy VM build New bootable x86_64 VM image built with gokrazy. Covers first-time setup (make ze-gokrazy-deps), build (make ze-gokrazy with USER/PASS), QEMU testing (make ze-gokrazy-run), hardware deployment, A/B updates, seed config, runtime config persistence under /perm, and the internal- plugins-only constraint. Source commit: 7fcc8083 (main repo). Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

    @thomas-mangin thomas-mangin committed Apr 11, 2026
    4941546
  • Rewrite rest-api page and add grpc-api for the new API engine The REST surface is no longer the web UI with content negotiation. It is a dedicated API server on its own port (default 8081) exposing /api/v1/execute, /api/v1/commands, streaming over SSE, and typed config sessions. gRPC is the matching transport on port 50051 (package ze.api.v1, ZeService + ZeConfigService), sharing the same engine. Both transports support Bearer auth (per-user or single token), TLS 1.2+, and OpenAPI 3.1 / gRPC reflection for discovery. CORS is wired for browser clients. Old content-negotiation doc moved to a web-ui mention for later cleanup. Source commit: 7fcc8083 (main repo). Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

    @thomas-mangin thomas-mangin committed Apr 11, 2026
    9f76645
  • Rewrite redistribution page as filter chain Reflects the spec-policy-1..4 work: redistribution {} block renamed to filter {}, filter instances defined under bgp/policy, loop-detection as a built-in filter type with tunable allow-own-as and cluster-id. Old rfc:no-self-as / rfc:bogon-check default filter names are gone; loop detection is now auto-populated from policy entries and runs with sensible defaults even without config. Adds migration notes. Source commit: 7fcc8083 (main repo). Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

    @thomas-mangin thomas-mangin committed Apr 11, 2026
    b1e215d
  • Update plugin config to use 'use' keyword for built-in plugins Replace 'run "ze plugin <name>"' with 'use <name>' across all wiki pages (46 files). The 'use' keyword is for built-in (in-process) plugins; 'run' is now reserved for external process plugins. Updated system.md plugin section to document both keywords. Based on main@80b7b7da (feat: add 'use' keyword for built-in plugins). Added .source-commit to track the codebase commit this wiki is synced to. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

    @thomas-mangin thomas-mangin committed Apr 8, 2026
    221d672
  • Update comparison page with clarifications YANG: plugins extend the schema. Cymru: also in CLI. SSH: over TLS with blob storage credentials. AI: all CLI features available via command line. Update groups: no explicit peer-group assignment needed. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

    @thomas-mangin thomas-mangin committed Apr 8, 2026
    097a0f9
  • Restore proper Home page with GitHub links Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

    @thomas-mangin thomas-mangin committed Apr 8, 2026
    5aabb9b
  • Flatten wiki to root directory for GitHub wiki compatibility GitHub wiki resolves pages by filename in the root directory only. Moved all 123 .md files from subdirectories to root. Renamed configuration/interfaces.md to configuration-interfaces.md to avoid collision with interfaces/interfaces.md. Fixed 8 image paths. Subdirectories are now empty (images/ retained for assets). Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

    @thomas-mangin thomas-mangin committed Apr 8, 2026
    f5f8c13
  • Update push-wiki for github/codeberg branch split Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

    @thomas-mangin thomas-mangin committed Apr 8, 2026
    e38a96b
  • Use flat page names in links for GitHub wiki compatibility GitHub wiki resolves pages by filename alone, ignoring directories. Rewrote 538 links to use basename only (e.g., about/what-is-ze → what-is-ze). Renamed 12 index.md files to their section name (e.g., about/index.md → about/about.md) and 2 colliding basenames (plugin-development/testing.md → plugin-testing.md, configuration/bgp/bgp-role.md → configuration-bgp-role.md). Files stay in subdirectories; only link targets changed. Added bin/fix-wiki-links.go tool. Removed bin/flatten-wiki.go, bin/strip-md-ext.go, bin/root-relative-links.go (superseded). Updated check-links.go to resolve by basename like GitHub wiki. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

    @thomas-mangin thomas-mangin committed Apr 8, 2026
    5ff0579
  • Make all wiki links root-relative for GitHub wiki compatibility Rewrote 407 relative links (../path, ./path) to root-relative paths so they resolve correctly on GitHub wiki where pages render at the wiki root URL regardless of directory depth. Updated check-links.go to resolve links from both file directory and wiki root. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

    @thomas-mangin thomas-mangin committed Apr 8, 2026
    511e683
  • Target GitHub wiki: rename branch to master, strip .md from all links Renamed branch from main to master (GitHub wiki default). Stripped .md extension from 538 internal wiki links for GitHub wiki compatibility. Updated push-wiki to push master to both remotes (master:main for Codeberg). Updated check-links.go to resolve both path and path.md. Added bin/strip-md-ext.go rewrite tool. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

    @thomas-mangin thomas-mangin committed Apr 8, 2026
    952e0ff
  • Add push-wiki script to push to both Codeberg and GitHub Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

    @thomas-mangin thomas-mangin committed Apr 8, 2026
    2baae3c
  • Fill wiki coverage gaps: 9 new pages, 17 updates, 4 renames, link checker New pages: 4 core plugin pages (bgp, bgp-healthcheck, interface, loop), telemetry config, authorization config, community filter config, ze-perf performance docs, ze-test mock server docs. Updates: expanded command reference (ze data, resolve, completion, yang, plugin + 13 runtime commands), added missing API endpoints to LG/web/REST pages, expanded system.md (SSH, environment tuning, external plugins), fib.md (admin-distance, kernel/P4 config), peers.md (behavior, rib, process content, send-hold-time), chaos flags, navigation and indexes. Renames: fibkernel->fib-kernel, fibp4->fib-p4, ifacedhcp->iface-dhcp, ifacenetlink->iface-netlink. Fixed all 23 stale name references in prose. Added bin/check-links.go (wiki link checker) and .claude/skills/commit.md. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

    @thomas-mangin thomas-mangin committed Apr 8, 2026
    08d67fb
  • Fix 80 factual errors across wiki verified against codebase Cross-referenced every wiki page against ../main source code and corrected: wrong paths (bus/, dns/, subsystem/, .github/, .claude/commands/), invalid commands (ze start ze.conf, bgp log set, commit confirm, monitor include/exclude), wrong YANG syntax (hold-time, md5-password, ttl, role, dhcp, bridge, add-path, GR mode/disable), plugin names missing bgp- prefix and hyphens, plugin { external } blocks for internal plugins, wrong defaults (web port 3443 not 8443, channel capacity 4096 not 64, static admin distance 10 not 1), inflated counts (unit tests ~8k not 18k, fuzz targets 41 not 121, plugins 32 not 21/25), chaos property names, make target descriptions (ze-verify, ze-ci, ze-test, ze-perf), and dozens of other inaccuracies. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

    @thomas-mangin thomas-mangin committed Apr 8, 2026
    225c676
  • Author the Ze wiki 117 wiki pages across about, first-steps, configuration, operation, interfaces, plugins (with per-plugin reference), plugin development, chaos testing, blueprints, development, and reference sections. The wiki describes the current state of Ze only. No forward-looking feature promises: every "planned", "yet", "Phase 2" and "on the roadmap" phrasing has been rephrased to present-tense factual statements. Move PLAN.md, IMPLEMENTATION.md, and the Phase 1 and Phase 2 build reports into build/, alongside the new build/DEFERRED.md tracker that records every rephrased claim for later review. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

    @thomas-mangin thomas-mangin committed Apr 8, 2026
    cd5ac8c
  • Add wiki PLAN and IMPLEMENTATION briefs Capture the page-by-page plan for the Ze wiki and the implementation brief that tells an agent how to execute it. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

    @thomas-mangin thomas-mangin committed Apr 8, 2026
    a4eafa9
  • Add presentation folder Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

    @thomas-mangin thomas-mangin committed Apr 8, 2026
    0bd8fef
  • First wiki Add wiki content: Home page, images, and presentation Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

    Thomas Mangin committed Apr 8, 2026
    bf96059