Parent epic: #7
Normative specs: 01 — Data ownership, 06 — Studio sections
Scope
Implement database-owned versioned navigation overrides, announcements, sponsors, explicit redirect/retirement manifest records, SEO exceptions, and typed safe operational site settings through shared services with Studio/admin API CRUD/preview/publish/archive, revision/idempotency, permissions, audit, and cache invalidation. Clearly distinguish GitHub-owned content fields and bootstrap-only secret configuration.
Non-goals
No arbitrary template/HTML/script injection, secret editing/export, GitHub editorial override, unreviewed redirect, or settings that require DB availability before bootstrap.
Acceptance criteria
Test scenarios
- Valid/invalid navigation tree, duplicate order/path, unsafe link/HTML, announcement schedule/timezone, sponsor lifecycle.
- Redirect loop/chain/case/query/fragment/unknown, stale/replayed publish, cache invalidation and rollback.
- Attempt to edit/export secret or GitHub-owned field is denied.
Playwright
Manage and preview/publish each type in Studio; verify public desktop/mobile navigation/announcement/sponsor and explicit redirect; test empty/error/stale/denied states and screenshots.
Dependencies
Depends on #31–#35. Redirect behavior depends on cutover scope #29.
Parent epic: #7
Normative specs: 01 — Data ownership, 06 — Studio sections
Scope
Implement database-owned versioned navigation overrides, announcements, sponsors, explicit redirect/retirement manifest records, SEO exceptions, and typed safe operational site settings through shared services with Studio/admin API CRUD/preview/publish/archive, revision/idempotency, permissions, audit, and cache invalidation. Clearly distinguish GitHub-owned content fields and bootstrap-only secret configuration.
Non-goals
No arbitrary template/HTML/script injection, secret editing/export, GitHub editorial override, unreviewed redirect, or settings that require DB availability before bootstrap.
Acceptance criteria
Test scenarios
Playwright
Manage and preview/publish each type in Studio; verify public desktop/mobile navigation/announcement/sponsor and explicit redirect; test empty/error/stale/denied states and screenshots.
Dependencies
Depends on #31–#35. Redirect behavior depends on cutover scope #29.