24 / 24 catalogued, including all three intentional reuses
Campaign unit files
14 / 14 exact stat and source catalogue
Utility files
6 / 6 catalogued
Campaign-local images
154 non-localized filenames
Direct scenario/story audio
27 unique references
Custom-unit inherited audio
45 expanded filenames
Custom-unit macro closure
31 resolved symbols; zero unresolved
Campaign state
33 lifecycle records plus object/recruit-state patterns
Maintenance support
Offline search, generated consistency checks, pinned source provenance, and two reusable Python tools
Deliberate boundaries
Not included as a campaign-specific catalogue
Reason
Every ordinary core unit recruitable in every scenario
Those definitions belong to the core Wesnoth unit reference; the guide documents campaign roster use and all custom types.
Localized copies under image l10n directories
The manifest deliberately counts source artwork, not language-specific render variants.
Engine C++ implementation internals
The guide’s scope is campaign authoring, WML/Lua behavior, assets, state, and maintenance.
Runtime animation winner prediction
The audio closure conservatively records syntactic dependencies; exact animation arbitration belongs to the engine and current unit state.
A frozen copy of upstream GPL source
The archive records commit-pinned links and hashes instead of duplicating upstream files.
Reproducible maintenance tools
Tool
Purpose
tools/trow_unit_dependency_audit.py
Regenerates campaign-unit base inheritance, transitive macro resolution, and expanded audio from a local Wesnoth checkout.
tools/validate_reference.py
Checks local links, unique titles, search-index parity, external runtime dependencies, and required machine-readable artifacts.
Release status
Release 1.0 is a complete developer reference within its stated scope. Future releases should be driven by upstream source changes, factual corrections, or genuinely new maintainer needs—not by adding pages for the sake of a larger page count.
The source baseline for the final closure is commit 6ab3fc1. To refresh after upstream changes, run the two bundled tools, update the pinned snapshot, review the generated diffs, and rebuild the search and audit data.