# Event History Website

Start here for implementation or later changes to the public Event Statistics page.

## Documents

| Task | Document |
| --- | --- |
| Implement the feature | [implementation-plan.md](implementation-plan.md) |
| Understand tables, totals, and query boundaries | [data-contract.md](data-contract.md) |
| Change routes, views, caching, or CSV | [page-contract.md](page-contract.md) |
| Make a later focused modification | [maintenance-reference.md](maintenance-reference.md) |
| Original server/database specification | [../../temp/event-history-data.md](../../temp/event-history-data.md) |

## Locked Decisions

- Public route: `event-statistics`; do not add a theme-menu item.
- Navigation: event list → guild list → guild player list → player detail.
- Only a selected guild player list has a CSV download. There is no event-wide or single-player CSV.
- All completed-event rendering uses snapshot tables only. Never join live players or guilds.
- `in_progress` events appear in the root list but every drill-down/download returns 404.
- `guild_id=0` is a valid localized `No Guild` group.
- Jail time is not stored and must not appear in the UI or CSV.
- Guild/player HTML caches live for 15 minutes; generated guild CSV files never expire.
- Do not run Prettier, php-cs-fixer, or automated suites for this task per repository instructions.

## Existing Code to Reuse

- Page/request lifecycle: `Docs/knowledge/02-architecture.md`
- Base/CMS model bridge: `Docs/knowledge/03-models-convention.md`
- Profile field layout: `src/pages/public/profile/`
- Common ranking table: `src/pages/public/ranking/rankings/player.php`
- Cache API: `src/core/modules/Cache/Cache.php`

No further architecture scan, source-specific model inspection, theme-template inspection, or live player/guild model analysis is required.
