the troubleshooting table described the version before the fixes
the example the page told you to write was refused by the version it documents
a hook is a group now, and the pages say so
stop offering {{ if }} as an option: it fails the build where it would matter
machine-side hooks: what a topology can run outside its nodes
drop the flag and the field that did nothing
the segment aggregation rename, and a group's value read from a node on it
assembly page: drop the duplicated opening and the leftovers of the move
split writing a block from assembling the blocks
keep the term in the heading; the purpose belongs in the first line
Template System: say what each mechanism is for before saying what it is
deploy says what an object is; virtual says whether we configure it
wiki: point the shared-parameter example at one that reads the value back
wiki: stop documenting template constructs that fail the build
wiki: point at topologies/ where a topology moved The thirteen deployable ones moved out of example/, which now holds only the notation demonstrations. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
wiki: say topology where a topology is meant, and stop saying scenario scenario is netroub's word - a configuration together with the events that happen in it, defined in its papers and in its own schema, where a scenario is a topology plus events. This documentation had taken it for what a reader writes, which would have left two projects by the same author using one word for two things. What you write - the DOT file and the YAML that configures it - is a topology, which is how this field already speaks: containerlab calls its own file a topology definition and puts the nodes' images and configuration in it. Basic-Concepts and Home say so before the word is used. Where only the graph is meant the pages now say the DOT file, and topology file is left to mean what a platform reads.
wiki: make the FRR examples run, and stop claiming what TiNET does not do Module-FRR's two examples were the last that did not work. The first reached for ip_net from a node template, where interface parameters do not exist. The second put FRRVtyshCLI on the startup block that gathers the others, so each gathered block came back quoted inside the outer vtysh command - and its policy: [ip] named a layer where a policy name belongs. Both are replaced by what was built and run: startup gathers, each gathered block carries the format, and the topo.yaml shown is the output of the input above it. TiNET writes a node_configs entry for every node, with an empty cmds: when there is nothing to run - the page had said the entry is left out, since v0.7.0. containerlab does leave its exec: out, and that page was right; the two now say so where they differ. Also: Module-System's result tree still had r1/frr.conf, and put a vtysh command format on a file where it does nothing.
wiki: the two things that were being left for next time A literal {{ }} in a generated file is filled in by dot2net without a word - the file comes out looking right and carrying a value the downstream tool was meant to choose. That is worth a section of its own in Template-System, with the two ways to write it out and the two settings that exist because writing it out by hand is easy to get wrong. Best-Practices has the design side: decide which of the two tools fills in each value, and do not let both. The platform table gains the row a reader looks for when asking whether a lab can check itself: TiNET has a test: section dot2net does not write yet, Kathara dropped ltest in 3.8.0, containerlab has nothing.
wiki: make the examples run, and say what virtual means now The two Complete Examples printed a loopback address from a scenario that never asked for one, and had no interface policy either - copied out and run, they stopped at 'no segment for layer ip'. Both build now; containerlab's generated topo.yaml is the real output of the example above it. The FRR page told readers to write 'conf t' in a template whose FormatStyle already writes it, which would have produced it twice. Its topology output had no network-mode: none, the platform-node paragraph said kind was unnecessary when only image is, and interface_class: is not a key any more than node_class: was. virtual now has a section: it means something different on a node, an interface and a connection, and since 0.8.0 a virtual interface no longer takes its link with it - which nobody was told. Also: TiNET's shell failure mode is not containerlab's (its output is piped to a shell on the host), FormatStyle-Design carried a backward compatibility section for fields that no longer exist, and four cross-page anchors pointed at headings that were renamed.
fix what the sweep left behind: names, examples, and the rules they depend on The pages written from scratch were checked against the code; the older ones were not, and the site contradicted itself. The default interface prefix said net in the reference and eth in the upgrade page. The frr FormatStyle was called frrVtysh, which never existed. TiNET's mounts had no $PWD and grew a sysctls section it does not generate; containerlab's examples had no network-mode: none, in a page that explains it is there. The tutorial's first YAML example used keys that do not exist, which 0.8.0 rejects outright, and Best-Practices told readers to run subcommands that were never implemented. Added what everything else leans on: how several classes on one object combine and which one wins, scope: group and what a group-scoped file is for, and the per-machine topology and spec files on the two platform pages. Kathara and assert are in the module tables now, so the new page can be reached.
0.8.0: multi-host, the ConfigTemplate field reference, and the assert module YAML-Configuration: the worker group class and what follows from naming it - a topology file per machine, the check against a node in two of them, the bridge replacement for a segment that reaches across - and boundary_crossing_connection_class. Template-System: a reference for the fields of a config entry, which the wiki never had. raw, delimiters, required_link and required_params are in it. Module-System: the assert module. Home: the Kathara page.
update
add wasure