Skip to main content
Version: 2.0.0 (Typed Core & Quality Upgrade)

Glossary

Definitions of core terms used throughout the Flude design documentation, cross-referenced to their real implementation in engine/ude/.

Pipeline Stages​

  • Collector — Component responsible for invoking an external tool (Doxygen) against source code and producing intermediate XML. Base class: BaseCollector (engine/ude/interfaces.py).
  • Parser — Component that reads a Collector's XML output and constructs the typed Intermediate Representation. Base class: BaseParser (engine/ude/interfaces.py); the concrete Doxygen implementation is DoxygenXmlParser (engine/ude/parsers/doxygen_router.py), which dispatches to language-specific subclasses of BaseDoxygenParser.
  • Renderer — Component that consumes the IR (ProjectCatalog) and writes final output files (HTML or Hugo Markdown). Base class: BaseRenderer (engine/ude/interfaces.py). See Renderer Interface for the full 16-class naming matrix (<Lang><Output><ID>Renderer, e.g. CppHtmlDefaultRenderer).
  • Orchestrator — The top-level coordinator that drives a single project through Collector → Parser → Renderer in sequence, resolves configuration, and manages the build cache. Implemented as UdeOrchestrator (engine/ude/orchestrator.py). Referred to informally as "the orchestrator" elsewhere in this documentation set — both forms mean this same class.

Intermediate Representation (IR)​

  • IR (Intermediate Representation) — The typed Pydantic data model produced by a Parser and consumed by a Renderer, decoupling language-specific parsing from output-format-specific rendering. Defined in engine/ude/models.py.
  • Catalog / ProjectCatalog — The root IR container for one compiled project: a collection of typed entity models plus project metadata (project_name, version). Class: ProjectCatalog (engine/ude/models.py).
  • Typed entity models — The seven Pydantic models that make up a ProjectCatalog's contents, replacing the earlier v1.0 ClassEntity discriminated union (see GAP-03 in roadmap/future_v2.md): ClassModel, MethodModel, ParameterModel, EnumModel, VariableModel, ConstantModel, TypeAliasModel. A method's multiple signatures (e.g. Python/SWIG docstring overloads) are captured via OverloadModel on MethodModel.overloads.

Configuration​

  • GlobalConfig — The engine-wide configuration model (ude_global_config.json), covering fields such as doxygen_path, log_level, log_file, cache_root_dir, global_templates_dir. Class: GlobalConfig (engine/ude/config.py).
  • Doxyfile — A Doxygen configuration source file. Flude merges Doxyfile sources across three tiers (global template → target-specific template → runtime parameters) using key-level, last-value-wins semantics.
  • sidebar.toml — The single, mandatory per-project navigation configuration file, resolved next to each project's ude_doc_config.json. Loaded via the strict load_sidebar_toml() in engine/ude/orchestrator.py, which raises UdeException if the file is missing or malformed. Defines the [[sidebar]] node array (four node types: api_reference, static, inline, redirect) and, optionally, a [groups] table overriding the engine-default folder taxonomy. See Sidebar Navigation Configuration (Section 3) for the full schema.

Caching & Errors​

  • BuildCacheManager — Implements the two-level (L1 parse-cache / L2 render-cache) incremental build cache, keyed by IR content hash. Class: BuildCacheManager (engine/ude/storage.py).
  • UdeException — The engine's single custom exception type for configuration and pipeline-resolution failures (e.g. a missing sidebar.toml). Class: UdeException (engine/ude/interfaces.py). Callers that need a hard failure on a real misconfiguration should let it propagate rather than swallowing it with a bare except Exception.

Output Renderers​

  • HtmlRenderer — Concrete BaseRenderer producing standalone static HTML output. Class: HtmlRenderer (engine/ude/renderers/static_html.py).
  • HugoMarkdownRenderer — Concrete BaseRenderer producing Hugo-compatible Markdown output. Class: HugoMarkdownRenderer (engine/ude/renderers/hugo_markdown.py).