Skip to content

History

Revisions

  • Rewrite the RFC compliance page against the code The page was linked from nowhere in the README and had drifted: 166 enrolled documents where there are 168, 2,720 requirements where there are 2,909, four ratchets where there are seven, and "none outstanding" where 34 requirements still owe work in the declared remainder. Every figure is now recomputed from the collector inside scripts/dev/rfc_requirements.py rather than copied from the generated ledger, which can itself be stale in a dirty tree. An independent pass then re-derived each claim from the producing code and found nine wrong or overstated ones, fixed here. The worst stated the tagged-test approval escape as owner-enforced when it is a comment plus a greppable trail; the scope of that guard also differs between Go and the other test file types, which the page now says. The page states the weak points too, because a page arguing that a compliance claim is honest would refute itself by hiding its own: 3,060 of the 3,081 requirement tags are unit tests, 32 enrolled RFCs have no row on the public status page, the letter-and-spirit audit covers 49 of 1,534 auditable requirements, and no check verifies this page at all. The sidebar label becomes "RFC Compliance". The slug is unchanged, so the sidebar and the four content pages that link it still resolve. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>

    @thomas-mangin thomas-mangin committed Aug 1, 2026
    912de1a
  • docs(wiki): sync wiki with 15f9b98ae..acbef856e (93 commits) No new pages. Updated 26 existing pages covering: the plugin peer-up barrier and exclusive role claims, progress-bounded plugin startup, the route-server replay/live partition at a peer-up cut, one End-of-RIB per family per session, forward refusal on an unresolvable source, IRR filtering becoming opt-in, same-subnet interface renumbering, all- participant config reload and nested config roots, tc noqueue snapshot and per-protocol filter priorities, DDoS fail-closed on an unresolved victim, OSPF interface-open resilience and the OSPFv3 DAD source, L2TP control frames on the adopted socket, runtime state persistence, the appliance e2fsprogs resolution, and off-Linux unit tests. Corrects two false claims found while syncing: - rfc-implementation.md said Ze "deviates from RFCs in a small number of cases, and every deviation is documented in exabgp-differences.md or in the relevant in-tree architecture doc". Neither half held. There are 539 {gap:} annotations across 84 of the 166 enrolled RFCs, and that is where deviations live, on the specific requirement line with the producing file:line. Replaced with the real shape plus three worked RFC 4271 examples. - The attribute-ordering deviation it cited no longer exists: all three builders keep type-code order since ea9c83ca5. Stale counts fixed: 86 registered plugins is now 87.

    @thomas-mangin thomas-mangin committed Jul 26, 2026
    3d9264d
  • docs(wiki): sync wiki with 44673dfea..15f9b98ae (211 commits) Updated 29 existing pages. No new pages. Breaking CLI change: a bare `ze <config-file>` no longer starts the daemon. Position 1 accepted a command OR a free-form path, so a config named like a command was dispatched as that command and never loaded. Launch is now `ze start <config-file>`, with `-` kept as the stdin sentinel. Corrected in quick-start, starting-and-stopping (including its systemd unit), command-reference, debugging, scenarios, chaos-tested-peering and exabgp-migration-walkthrough. command-reference also gains a `ze start` section with its own flags. Also flipped: `ze config set`, `activate` and `deactivate` no longer notify a running daemon by default. `--reload` opts in and `--no-reload` is gone. Feature gates grew from 12 to 36 and now include the BGP engine itself, the BNG, IPsec, VPP and every routing protocol. building.md gets the full grouped list, the generated `go install` line, and the dependency rules that make it usable: ze_bmp needs ze_bgp, and bfd/api stays always-on so a BFD-less build still runs BGP and OSPF unchanged. status, feature-inventory, comparison and glossary all carried the stale twelve-tag list. RFC gate: 138 enrolled RFCs over 1466 gated requirements became 166 documents over 2720, none outstanding. Documented the four regression ratchets and the extraction-completeness pass, including why deleting a requirement is blocked: it would otherwise be the cheapest route from red to green, cheaper than declaring a gap, which would pressure contributors to hide obligations. Protocol correctness, documented where an operator would look for it: - route-injection: an operator-supplied as-path gets the local AS prepended for a plain eBGP peer (RFC 4271 5.1.2). Verbatim transparency is scoped to RS clients, so the two never share a built UPDATE. - peers: RFC 6286 identifier validation on both receive rails, AS-wide uniqueness, and the allow-shared-router-id opt-out for anycast speakers. - graceful-restart: RFC 9494 4.6 depreference on stale readvertisement is driven by stale level rather than restart state, so mark-stale routes are covered too. - bgp-nlri-ls: an unknown NLRI type is skipped, not fatal to every NLRI after it, per RFC 9552 5.1. - bgp-nlri-evpn: Ze is a control-plane relay and not a PE; malformed IP Address Length is rejected. - bgp-rib: multipath ECMP group installation and the ecmp-paths field. Security and robustness: authorization fails closed on an unresolved profile, with the reserved-namespace break-glass path and the AAA ingress filtering that stops an untrusted RADIUS or TACACS+ server naming it. EAP-TLS refuses a responder that has no trust anchor to validate against. static isolates one unprogrammable route instead of failing the whole section, withdraws the orphaned old route on a skipped replacement, and surfaces both through skip-reason and a doctor check. Operator traps now named: the pinned appliance kernel ships no L2TP and Ze's fail-closed probe crash-loops the daemon on it with nothing useful on serial; policy routing needs a filter chain because nftables rejects a route chain on prerouting, which took the plugin down at startup; nft set-element timeouts silently never expired until the set-level flag was set. ci.md claimed the CI configuration was not in the repository. It is: validation moved off Codeberg's shared Woodpecker runners onto GitHub Actions, six workflows, with the stage list single-sourced in stagesForMode so a gate absent from that function runs nowhere. testing.md gains the test-health dashboard (is our testing correct, not is it large), the two sensitivity ratchets, the accept-only .ci lint and its shrink-only baseline, and the needs-linux and netns-link directives. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>

    @thomas-mangin thomas-mangin committed Jul 25, 2026
    77a782a
  • docs(wiki): repoint every repo link at github.com/ze-software/ze Codeberg's 2026-07-23 LLM policy made hosting development there untenable, so the module path and origin moved to github.com/ze-software/ze (main 34cd33b87). Every clone URL, browse link, issue link and Go import path in the wiki still named a repository the project has left. Three forms needed three different targets, which is why this was scripted rather than sed'd: a browse link becomes /blob/main/ for a file and /tree/main/ for a directory, an import path just swaps its root, and the clone, issues and wiki links each have their own GitHub shape. The two prose labels that named Codeberg (the footer's "Source on Codeberg" and Home's "development on Codeberg") are corrected too, since the rewrite would otherwise leave them contradicting their own links. bin/gen-llms-txt.go carried the old base URL as its default, so every regeneration would have reintroduced 177 stale links into llms.txt. Fixed at the source rather than in the generated output. The Codeberg wiki remains a single-page redirect, so the remotes described in the untracked CLAUDE.md are unchanged and still accurate. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>

    @thomas-mangin thomas-mangin committed Jul 25, 2026
    2cb97ec
  • docs(wiki): sync wiki with 075d46b4b..44673dfea (388 commits) New page: vrrp.md (VRRP first-hop redundancy, RFC 9568/3768). Updated 21 existing pages covering: the RFC requirement gate (make ze-rfc-check, 138 RFCs enrolled, ai/RFC-REQUIREMENTS.md ledger, /ze-rfc-audit); BMP Loc-RIB monitoring (RFC 9069, Peer Type 3); RPKI origin-validation actions (renamed rpki/action, per-peer/group override, re-validation on VRP change) and the matching config examples; Looking Glass per-peer route counts and birdwatcher state_changed/last_error; CLI namespace grammar, stdin/stdout, plugin tab-completion and renamed show commands; L2TP --user filter and RADIUS CoA port; AAA profile enforcement (fail-closed); and show bgp rib rpf. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EmLhGEE7o91brycJfwfvZm

    @thomas-mangin thomas-mangin committed Jul 20, 2026
    02e9d8a
  • docs(wiki): correct MOBIKE support status

    @thomas-mangin thomas-mangin committed Jul 13, 2026
    1cfb05b
  • docs(wiki): add command catalog

    @thomas-mangin thomas-mangin committed Jul 13, 2026
    f3b5be7
  • docs(wiki): sync wiki with cc71d46e2..075d46b4b (440 commits) New pages: as112, radius, ddos, anomaly. Updated existing pages covering: IPsec IKEv2 responder and real make-before-break rekeying; OSPF extension family (Segment Routing, TE, TI-LFA, graceful restart, virtual links, NBMA, point-to- multipoint, multi-instance, OSPFv3 IPsec); VPP tunnels, SPAN, WireGuard, LCP pairs, DSCP policing, and static routes; L2TP LAC initiator and PPPoE-to-L2TP relay; appliance pure-Go initrd and startup resilience; build-time feature gates; web RBAC, AAA-chain login, config transfer, and i18n; verb-first CLI and new show, announce, anomaly, and ddos verbs; DDoS mitigation; behavioral anomaly detection; encrypted and validated DNS (DoT, DoH, DNSSEC); RADIUS operator auth; GTSM and CoPP control-plane protection. Refreshed feature-inventory, status, plugins, comparison, glossary, and _Sidebar; regenerated llms.txt and llms-full.txt. Corrected stale show ip ospf to show ospf and show ipsec to show vpn ipsec commands. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Ny5i2V6UuvNF8TQG4WN1zv

    @thomas-mangin thomas-mangin committed Jul 13, 2026
    536fc19
  • docs(wiki): sync wiki with e87103f5..cc71d46e2 (155 commits) New pages: ospf, isis (native OSPFv2/OSPFv3 and IS-IS link-state IGPs). Updated 26 existing pages covering: OSPF and IS-IS index entries (sidebar, feature-inventory, plugins, status, comparison, command-reference, show-commands, glossary); MPLS/LDP/RSVP-TE with RFC 4090 facility-backup fast reroute; the logical-name interface resolver and mac/match binding; firewall IRR prefix-list filtering and the shared IRR prefix store; BGP SR-Policy/MUP/VPLS/MVPN/FlowSpec plugin-pipeline migration, SRv6 RFC 9252 fixes, and PATHS-LIMIT; the Go installer, zero-touch provisioning, and appliance auto-init; and the interactive TUI launcher with the 7-role color system. Regenerated llms.txt and llms-full.txt; bumped .source-commit to HEAD. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01KY83ZW6tzbKTiJrS2MEVx1

    @thomas-mangin thomas-mangin committed Jun 24, 2026
    a3ff6ff
  • docs(wiki): sync wiki with 57bc272..e87103f (130 commits) New pages: class-of-service, bgp-filter-irr, bgp-nlri-srpolicy. Updated 23 existing pages covering: CoS/QoS subsystem, PATHS-LIMIT capability, SR-Policy NLRI, IRR prefix filtering, granular debug, ze format, nop keyword, env var promotion, show enricher, FlowSpec rate-limit, plugin DoctorChecks, L2TP priority, Workbench default UI, appliance ISO workflow, and performance round 3 optimizations. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

    @thomas-mangin thomas-mangin committed Jun 15, 2026
    1d2aef9
  • docs(wiki): document gomu mutation testing Add mutation testing section to testing.md and mention it in ci.md. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

    @thomas-mangin thomas-mangin committed Jun 11, 2026
    087d4aa
  • docs(wiki): sync wiki with 260623af4..57bc2720b (296 commits) No new pages. Updated 15 existing pages covering: MRT daemon recording and expanded analysis tool, verb-first CLI grammar, command surface ownership, pipe operators (first N, last N), ze help command, internal ICMP engine, iPXE chainloading, appliance ISO builds, kernel profiles, unified binary with build tags, attrpool sharding, mutation testing, QEMU test suite, authorization sidebar link. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

    @thomas-mangin thomas-mangin committed Jun 9, 2026
    cca8cf8
  • docs(wiki): sync wiki with 64d4a22..260623a (6 commits) Mirror the docs/ code-accuracy refresh into the wiki and verify every changed claim against bin/ze --plugins, the YANG schema, and the Makefile. Updated 18 pages covering: - Reframed "Ze is not a router" / "not a routing suite" (why-ze, what-is-ze): Ze now has FIB pipeline, static/connected/kernel redistribution, policy routing, MPLS FIB, BFD, LDP, RSVP-TE, IPsec/IKE, L2TP, PPPoE in tree. - Removed stale "missing feature" rows now shipped (BMP, BFD, AIGP, private-AS removal, FIB, gRPC) and reworded confederation to match the code. - Corrected plugin registration names to match the registry: role -> bgp-role, filter-community -> bgp-filter-community, sysrib -> rib (catalogue contexts), iface -> interface (catalogue), rsvpte -> rsvp-te, flowexport -> flow-export, static-routes -> static, traffic-control -> traffic. - Plugin count corrected to 65 (verified via bin/ze --plugins). - Filter block: redistribution { } -> filter { } in architecture.md. - Added the show host platform command (cli, command-reference, host-inventory). - Fixed a false "Ze does not do AS-path regex" claim (bgp-filter-aspath exists). - Regenerated llms-full.txt; bumped .source-commit to 260623a. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

    @thomas-mangin thomas-mangin committed Jun 1, 2026
    3819a3f
  • remove presentation

    @thomas-mangin thomas-mangin committed Jun 1, 2026
    08663d7
  • docs: convert plugin examples from external { use } to internal { use } Match the new `internal` keyword added in ze main. Built-in plugins are now declared with `plugin { internal <name> { use <builtin> } }` instead of the ambiguous `external { use }` form. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

    @thomas-mangin thomas-mangin committed May 30, 2026
    018a245
  • docs(wiki): sync wiki with 0318cf8..64d4a22 (180 commits) New pages: mpls, rsvp-te, srv6, flow-export, gnmi, audit. Updated 32 existing pages covering: MPLS/LDP/RSVP-TE kernel forwarding, SRv6 Prefix-SID, sFlow/NetFlow/IPFIX flow export, gNMI config interface, local audit trail and RBAC hardening, ze install local/remote/uninstall and service management, installer initrd and first-boot bootstrap, platform-aware self-update backend, BGP policy action macros (modify, remove-private-as, aspath-length, community-match) and show policy test, IANA well-known community names, FIB recursive next-hop resolution / ECMP / rich routes, compact ribOut storage, ze doctor platform-aware checks, ze support bundle, debug flags, enriched crash capture, SMART disk health, PKI pem/bundle/ fingerprint sub-commands, transactional config commits and schema evolution, CLI default output format / session transcript / typed args / command-owned pipe filters, chaos FRR/BIRD config generation and fork mode, firewall masquerade port-range syntax, and IPsec EAP interop. Regenerated llms.txt and llms-full.txt (165 pages). Bumped .source-commit. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

    @thomas-mangin thomas-mangin committed May 29, 2026
    6f78254
  • docs(wiki): add cross-references to in-tree config guides editor-workflow.md: link to in-tree config-deactivate, config-reload, and environment-variables guides so wiki readers can find content that only exists in docs/. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

    @thomas-mangin thomas-mangin committed May 24, 2026
    1f21556
  • docs(wiki): sync wiki with 952308c..0318cf8 (192 commits) New pages: ipsec, docker, health-checks, production-diagnostics, self-update, ze-install. Updated 25 existing pages covering: IPsec/IKEv2, diagnostics suite, self-update with fleet rollout, ze doctor, health registry, crash capture, XFRM interfaces, interface rate tracking, FlowSpec-to-firewall bridge, ASPA policy enforcement, RS dynamic peers, AIGP support, DHCP named ranges, Docker support, zero-touch provisioning, ZeFS integrity, config schema stamp, graceful listener migration, chaos v2 actions, monitor ping/traceroute/netlink, live packet capture, DNS cache management, conntrack nfs/sqlnet helpers, archive pruning, performance optimization campaign, Go 1.26, and glossary additions. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

    @thomas-mangin thomas-mangin committed May 24, 2026
    bdf9f42
  • docs(wiki): sync wiki with ab0d20c..952308c (22 user-facing commits) ASPA path verification, named archive blocks, per-family address containers, named interface units, offload/steering, rpf-check enum, PPPoE client, keepalive timer, static route tables, kernel redistribute, DHCP server, conntrack, serial console, firmware update, RPF lookup, ze-analyse aspath, RIB attribute bundling, show <noun> grammar. New page: dhcp-server.md

    @thomas-mangin thomas-mangin committed May 17, 2026
    61e6f23
  • docs(wiki): update CLI commands to show <noun> grammar Update 7 wiki pages to reflect the unified show <noun> command grammar: cli, bmp, bgp-rr, static-routes, policy-routing, looking-glass, feature-inventory. Regenerate llms-full.txt.

    @thomas-mangin thomas-mangin committed May 15, 2026
    9ff8833
  • Remove invented --text flag from show host commands The show host handler returns JSON with no flags. The --text flag does not exist in the code. Removed from cli, command-reference, and host-inventory pages. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

    @thomas-mangin thomas-mangin committed May 14, 2026
    f7dec63
  • Fix plugin pages and CLI commands from YANG verification bgp-rr: rewrite as auto-enabled via route-reflector-client on peers, not use bgp-rr. Add cluster-id leaf and rr status/peers CLI commands. bgp-filter-prefix: fix to match YANG (entry keyed by prefix, unique prefixes, ge/le/action leaves). bgp-filter-aspath: fix container name to as-path-list (was aspath-filter). Entry keyed by regex. bgp-route-modify: fix set as container wrapper, add as-path-prepend and attribute table from YANG. policy-routing: revert CLI to policy show (PBR plugin command, not show policy which is BGP filter policy). cli: list both show policy list/chain (BGP filters) and policy show (PBR) as separate commands. system: add password auto-hashing note (was misplaced in deprecated-options). Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

    @thomas-mangin thomas-mangin committed May 14, 2026
    6131192
  • Resolve all remaining wiki issues New pages: bgp-rr (route reflector), bgp-filter-prefix (prefix-list), bgp-filter-aspath (AS-path regex), bgp-route-modify (attribute modifier), bgp-redistribute (cross-protocol redistribution), host-inventory (hardware detection, SMART, tuning). Resolves all 6 broken sidebar links. Fixes: redistribute syntax uses destination nesting in static-routes and l2tp. Policy routing CLI corrected to show policy list/chain (not policy show). gen-llms-txt.go strips bold, link, and code markdown from descriptions. deprecated-options notes plaintext-password auto-hashing. performance lists all 8 benchmark DUTs including OpenBGPd. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

    @thomas-mangin thomas-mangin committed May 14, 2026
    ef48a1d
  • Fix host command syntax: show host, not host show Ze runtime read commands follow the show <noun> grammar. The previous commit had the verb and noun inverted. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

    @thomas-mangin thomas-mangin committed May 14, 2026
    db80648
  • Update cli, command-reference, and chaos-testing pages cli: add config editor verbs (deactivate/activate on leaves, insert, rename, copy) and new command groups (host show, policy show, static show, bmp sessions/peers/rib). command-reference: add ze host, ze appliance, and ze l2tp command groups with full syntax. chaos-testing: add MCP server integration and Watchdog consumer for per-family convergence monitoring. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

    @thomas-mangin thomas-mangin committed May 14, 2026
    44d84b7
  • Update mcp, web-ui, bgp-rib, and system pages mcp: add task-augmented tools/call and Apps resources sections. web-ui: add Workbench V2 (experimental RouterOS-style operator UI). bgp-rib: document two-level ribInPool with ProtocolID for multi-source. system: add SSH public key authentication and static DNS nameservers. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

    @thomas-mangin thomas-mangin committed May 14, 2026
    acfd49d
  • Deep update for l2tp, firewall, vpp, appliance, and monitoring l2tp: rewrite with RADIUS auth/acct/CoA, IP pools, traffic shaping, CQM metrics, session observer, Prometheus metrics, web UI, kernel integration detail, and environment variables. firewall: rewrite with full match/action tables, VPP backend (NAT44-ED, ACL classify), named sets with timeouts, NAT exclude pattern. vpp: MPLS label programming now implemented (was "not yet wired"), add firewall VPP backend cross-reference, update roadmap table. appliance: add ze appliance management CLI (init, build, push, config-push with auto-revert, export/import, batch parallel ops). monitoring: add OS metrics (Netdata-compatible collectors), host hardware metrics (ze_host_* namespace), diagnostics section (FSM history, capture rings, VPP trace, active probes, structured log query, component health endpoint). Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

    @thomas-mangin thomas-mangin committed May 14, 2026
    6e51a0d
  • Sync wiki with 289 commits of May development New pages: static-routes (ECMP, BFD failover), policy-routing (PBR via nftables), pppoe (RFC 2516 access concentrator). Updated: bmp (looking glass integration, ze bmp rib show), looking-glass (BMP monitoring routes, new API endpoints), status (PPPoE, static routes, policy routing, diagnostics, appliance builder, host hardware, MCP task-augmented tools, VPP MPLS, firewall VPP backend, UPDATE coalescing, SSH public keys, Workbench V2), feature-inventory (same additions plus per-section detail). Sidebar adds static-routes, policy-routing, pppoe to Configuration and Plugins/Subsystems sections. Source commit: ab0d20c40 (2026-05-14). Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

    @thomas-mangin thomas-mangin committed May 14, 2026
    1cbecff
  • Add llms.txt and llms-full.txt generator for AI-era docs bin/gen-llms-txt.go parses _Sidebar.md, extracts descriptions from each page, and writes llms.txt (24K index) and llms-full.txt (640K bundle). Follows the llmstxt.org convention so AI assistants can fetch current Ze docs in one request. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

    @thomas-mangin thomas-mangin committed May 14, 2026
    7c0a393
  • wiki: sync with 538 commits of April development The wiki was pinned to 7fcc808 (2026-04-11) while the codebase added BFD, BMP, L2TP/PPP, firewall, traffic control, VPP integration, WireGuard, tunnel interfaces, TACACS+, NTP, sysctl, route reflector, route filters, gRPC API, and many more features across 538 commits. Updated 13 existing pages to fix factually wrong claims (BFD/BMP "not implemented", 32 plugin count, tunnels "not implemented") and reflect the current feature set. Created 9 new pages for the major new subsystems. Bumped .source-commit to current HEAD. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

    @thomas-mangin thomas-mangin committed Apr 21, 2026
    1292b4f