deploy says what an object is; virtual says whether we configure it
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: document the default, not the direction generate_scripts is off by default and no bundled example turns it on, so calling the entry script the recommended way described something a reader following those examples does not have. Each platform page leads with its own commands again, and the script follows as what it adds - including the part that matters: a scenario that collects files or has teardown commands needs it for them to happen at all.
wiki: say what each module is for, and run labs through the entry script The module list mixed a platform with a configuration helper without saying so. Modules are now introduced by what they do for you: platform modules write the file their platform reads, which is where the automation is; software modules help write what runs inside the nodes; assert checks the scenario against itself. Writing a module is a different subject from using one, so the interfaces and their timing moved to a page of their own, along with what a module may and may not say to a scenario. Each platform page now runs its lab through the generated script first and by hand second. That is not a preference: destroy through the script runs the teardown commands, collects the files, and cleans up what the lab left on the machine, and none of it happens when the platform's own command is called directly.
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: 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.
explain what the fields decide, not just that they exist A table row saying provide is 'mount or copy' tells a reader nothing about which to pick. The file definition fields now say what each one decides and links to the section that explains the choice, and the same was done for the param_rule sources and the class combination rules - where the config row was also wrong: two classes defining a config entry of the same name is an error whatever their strength, not a conflict resolved by tier. Module-FRR says where the log actually ends up: inside the container while the lab runs, under collected/<node>/ once it is destroyed, owned by whoever ran the script. That is the question a reader of the FRR page has, and answering it there is worth the repetition. Best-Practices had two sections about building incrementally and no table of contents; it now has one of each, in an order that follows how a scenario is written, plus what multi-host asks of a design. Also: the upgrade page belongs in Getting Started, not under Modules; node_class: is not a key and 0.8.0 rejects it; TiNET's complete example still had sysctls, switches: [] and ./ mounts; a digraph cannot hold --; and virtual on an interface no longer taking its link with it is a breaking change nobody was told about.
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: entry scripts, no management network, frrLogFile, and the real FormatStyle name Command-Reference: what the entry scripts do, the four steps of destroy, and files -v listing where each file goes and how. Module-Containerlab: nodes get no management network by default and why; the module writes setup-bridges.sh when a scenario uses its bridge setup classes. Bind paths and interface names brought up to date. Module-TiNet: same, for mounts and interface names. Module-FRR: frrLogFile, which makes FRR's log file, hands it to the frr user, names it to a running FRR and collects it - none of which FRR can do for itself. The FormatStyle is FRRVtyshCLI; the page called it frrCmd, which never existed.
fix TiNet -> TiNET, update broken links to File-Output and Module-System
update wiki for v0.7.0: add module docs, required_params, Value class