Add tests/lint/repository/test_task_file_numbering.py: numbered task files use exactly two leading digits, a numbered *_core.yml must be 00_core.yml, per directory the numbers are unique/consecutive and start at 01 (00 with a core file), numbered includes appear in ascending order, and shared helpers live in tasks/utils/ instead of the numbered chain. Apply it across every role: rename NN_core.yml to 00_core.yml with a consecutive down-shift of the siblings, move letter-suffix children into a subdirectory named after their parent task, relocate helpers included from more than one place into tasks/utils/, and update every reference (include_tasks, path_absolute, .ansible-lint-ignore, requirement docs). Legacy narration comments in the touched files are deleted; the upstream xwiki.properties reference block opts out via nocheck. The unused MAILU_IP6_PUBLIC var (only ever named in now-removed comments) is dropped. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Changelog Archive 📚
Per-release archive files for CHANGELOG.md. The active changelog at the repository root keeps the most recent releases inline; once an entry rolls past the configured retention window, it lives here as its own file.
Audience 👥
Contributors who need the full version history past the active changelog window, and Sphinx readers following the navigation tree.
Filename Schema 📁
Every archive file is named <padded-semver>-<release-date>.md, where each numeric component of the semver is zero-padded to three digits and the date is the YYYY-MM-DD value parsed from the original entry's header.
Padded names sort lexicographically in the same order as the underlying versions, so a directory listing is already in chronological order.
Maintenance 🛠️
Archive files are produced and the index in CHANGELOG.md is rebuilt by the changelog archive CLI. Do NOT edit archive files by hand: the source of truth for new entries is CHANGELOG.md, and the CLI moves an entry here exactly once when it leaves the active window.