---
id: ebaa1e1e-c386-49b4-92e2-8118a61f9175
title: Reserved index names can overwrite section indexes (releases/issues/pulls/wiki)
state: closed
labels:
- area:render
assignees: []
milestone: null
created: 2026-10-27T18:40:11.379047814Z
updated: 2026-10-27T19:53:10.490515246Z
---
## Problem

Generated index filenames are not reserved. A hostile `.forge` can overwrite the section index with a detail page:

- release `version: index` writes `releases/index.html` (the release list) after the index and replaces it with the release page;
- issue `id: index` writes `issues/index.html` after the issues index;
- PR `id: index` writes `pulls/index.html` after the pulls index;
- wiki file `index` (no extension) writes `wiki/index.html` after 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.
