#110 Reserved index names can overwrite section indexes (releases/issues/pulls/wiki)
Problem
Generated index filenames are not reserved. A hostile .forge can overwrite the section index with a detail page:
- release
version: indexwritesreleases/index.html(the release list) after the index and replaces it with the release page; - issue
id: indexwritesissues/index.htmlafter the issues index; - PR
id: indexwritespulls/index.htmlafter the pulls index; - wiki file
index(no extension) writeswiki/index.htmlafter the wiki index.
All four are accepted by the current is_safe_segment/is_safe_id checks. Verified with fixtures; e.g. a release named index makes releases/index.html render <h1>Index release</h1> instead of the release table.
Impact
Hostile or accidental metadata silently destroys a section index, its navigation target, and the API/HTML consistency around it. No script injection, but a denial/correctness bug in the generated site.
Fix
Reserve generated names (index) for releases, issue/PR ids, and wiki pages, or write indexes last and reject collisions loudly. Add one fixture covering all four collisions.
Uunknown ·
Fixed in PR #61 (
3df93c3a-bd5e-43f4-bb73-0f3dd886eeb1, commitee6e71b, mergede834a46). CI run2026-10-27T19-50-04.907798288Zpassed; fullcargo test,node --test tests/pages_inbox.test.mjs, fmt, and clippy green.paths::is_reserved_indexrejectsindex(case-insensitive) for issue/PR ids, release versions, and root wiki pages before writing. The generatedissues/pulls/releases/wikiindexes remain intact; testreserved_index_names_do_not_hijack_section_indexes.