# Decisions This document contains Architecture Decision Records (ADRs). Record decisions that materially affect architecture, operations, security, data ownership, public contracts, or long-term maintainability. For architecture context, see [ARCHITECTURE.md](ARCHITECTURE.md). ## Status Values - Proposed: under discussion. - Accepted: current decision. - Superseded: replaced by a newer decision. - Deprecated: no longer recommended, but still present. - Rejected: considered and intentionally not chosen. ## ADR Index | ID | Title | Status | Date | | --- | --- | --- | --- | | ADR-001 | Keep durable engineering documentation in the repository | Accepted | 2026-06-28 | | ADR-002 | Use a Vue and ASP.NET Core monorepo | Accepted | 2026-06-28 | | ADR-003 | Keep backend/admin data as public truth | Accepted | 2026-06-28 | | ADR-004 | Apply production migrations in the deploy pipeline | Accepted | 2026-06-28 | | ADR-005 | Require explicit validation evidence for application changes | Accepted | 2026-06-28 | ## ADR Template ### Status Proposed ### Date YYYY-MM-DD ### Context Describe the forces, constraints, project stage, and previous behavior. ### Problem State the specific problem being solved. ### Alternatives | Alternative | Summary | | --- | --- | | Option A | Summary. | | Option B | Summary. | ### Decision State the chosen option and why it fits the current constraints. ### Consequences - Expected benefit. - Expected cost or trade-off. - Follow-up or review trigger. ## ADR-001: Keep Durable Engineering Documentation In The Repository ### Status Accepted ### Date 2026-06-28 ### Context The project uses AI-assisted development and has accumulated product, runtime, security, admin, deployment, and design knowledge across code and local context. ### Problem Important engineering knowledge is harder to maintain when it lives only in chat, memory, or transient planning notes. ### Decision Keep durable engineering documentation in `docs/` and link high-level entry points from `README.md` and `AGENTS.md`. ### Consequences - Architecture, conventions, workflow, release, and decision context can be reviewed with code changes. - Planning notes may still exist for scoped work, but accepted project rules should move into durable docs. - Documentation must be maintained when architecture or operations change. ## ADR-002: Use A Vue And ASP.NET Core Monorepo ### Status Accepted ### Date 2026-06-28 ### Context The platform has a tightly related public frontend, admin frontend, backend API, database migrations, and deployment pipeline. ### Problem Splitting the application too early would increase coordination cost for a small product surface whose frontend and backend contracts evolve together. ### Decision Keep the Vue/Vite frontend and ASP.NET Core backend in one monorepo, with clear folder boundaries and shared validation through the Gitea workflow. ### Consequences - Cross-stack changes can be reviewed and deployed together. - CI can enforce frontend and backend build health in one place. - Internal boundaries must be protected through conventions and review, not repository separation. ## ADR-003: Keep Backend/Admin Data As Public Truth ### Status Accepted ### Date 2026-06-28 ### Context The public landing page and workflow screens need to reflect seasons, settings, showacts, sponsors, footer links, voting state, and participation state managed through the backend/admin surface. ### Problem Parallel frontend-only demo data creates drift between what admins configure and what users see. ### Decision Use backend/admin state as the source of truth for public pages whenever a backend-backed model exists. ### Consequences - Public UI should use `/api/public/*` data instead of local duplicate content. - Admin changes need API and frontend contract updates when public content changes. - Local-only state is reserved for interaction state, draft forms, and optimistic UI where appropriate. ## ADR-004: Apply Production Migrations In The Deploy Pipeline ### Status Accepted ### Date 2026-06-28 ### Context The backend can auto-apply migrations in development, while production deploys run through `.gitea/workflows/ci.yaml`. ### Problem Automatic production startup migrations make rollback and failure handling less predictable. ### Decision Apply EF Core migrations during the production deploy workflow after a predeploy PostgreSQL backup and before service restart. Keep development startup migrations for local convenience. ### Consequences - Production schema changes are visible in deployment logs. - Backups are written before migrations. - Destructive or hard-to-reverse migrations still require manual review and a recovery plan before release. ## ADR-005: Require Explicit Validation Evidence For Application Changes ### Status Accepted ### Date 2026-06-28 ### Context The repository currently relies on frontend type/build checks, backend Release builds, CI hygiene checks, and targeted manual verification. A dedicated test project is not checked in yet. ### Problem Without explicit validation evidence, reviewers cannot reliably distinguish a verified full-stack change from a plausible but untested edit. ### Decision Every non-trivial application change should include the commands and manual checks that were run, plus any failures or skipped checks. ### Consequences - Final work summaries and PR descriptions must name validation. - UI, auth, migration, and live/deploy changes need targeted checks beyond a generic build when practical. - Missing automated regression coverage remains visible as residual risk until test projects are added.