[E01-S01-T07] ADR: React/Vite admin #413

Merged
kpcto merged 1 commits from feature/194 into main 2026-08-31 01:11:36 +00:00
Member

What changed

Commits the React/Vite admin decision as ADR-008 for [E01-S01-T07] ADR: React/Vite admin (Refs #194), following the same in-repo verifiability pattern the ADR-006 PR (#411) adopted after the reviewer blocker on the wiki-only index reference:

  • docs/adr/ADR-008-react-vite-admin.md (new) — the ADR, with the six required sections in order (§46):
    • Context — modular monolith (ADR-001) whose single image contains built admin assets (Architecture §4); v0.1 scope includes an administration interface (§1) with /admin/* → /api/admin/v1/* and the initial IA (§20, §42); React/React DOM 19.2.8 (class C) and Vite 8.2.2 + @vitejs/plugin-react 6.1.0 already pinned in the golden tuple and build toolchain (Technology-Stack §5.2, §5.3, §7); no RSC in v1 (Technology-Stack §6); the admin app is not implemented yet (apps/server is the Fastify health shell, no apps/admin), so the ADR records the decision ahead of the code
    • Decision — EPPP builds the admin frontend with React/Vite admin: a React client application built with Vite (React 19.2.8, Vite 8.2.2, exact-pinned class C), served by the same application image (ADR-001, §4), under /admin/* calling the admin API at /api/admin/v1/*; deliberately separate from the public zero-JS SSR pipeline (ADR-007, §19.1); decision text matches the ADR index entry (§70 of docs/adr/README.md)
    • Alternatives — server-rendered admin through the public SSR pipeline (rejected), separate admin framework such as Next.js/Angular/Vue (rejected), framework-less Vite (rejected), build-time SSG admin (rejected), admin as a separate service/image (rejected)
    • Consequences — positive/negative/neutral trade-offs: one React 19.2.8 technology across public SSR and admin, Vite HMR + in-image static build, admin outside the public byte budget; client JS/runtime shipped to authenticated admin users, a new CI build/test surface (Vitest, Playwright), versioned /api/admin/v1/* contract, authenticated security surface (ADR-019)
    • Operational impact — apps/admin builds to static assets served behind /admin/* from the same image (no separate service/deployment); SPA calls the admin API at /api/admin/v1/*; CI build-apps stage globs apps/** and picks the admin up automatically; today rollback is reverting this doc commit
    • Revisit trigger — admin requirements the React/Vite SPA model cannot meet (§68 gates), React/Vite major moves in the golden tuple (ADR-026 lane), ADR-009/ADR-010 boundary changes, or the single-image model changing (ADR-001)
  • docs/adr/README.md (new) — the repository copy of the ADR index (§70): the full index table from the wiki ADR-Index page (including ADR-008 | React/Vite admin), the §46 six-sections mandate, the §71 architectural fitness tests and the §68 architecture review gates. Committed ADRs must match their §70 row; the wiki page remains the canonical index. This file is byte-identical to the copy introduced on feature/192 (#411), so the two open ADR PRs merge without conflict either order.
  • Documentation-only: no source, manifest, lockfile, workflow or test changes. Rollback is a revert of the commit on this branch.

Criterion → test table

Acceptance criterion Test / evidence
A committed ADR records React with Vite as the admin frontend (ADR-008) docs/adr/ADR-008-react-vite-admin.md committed on feature/194 (commit edbf8cb); the H1 heading reads # ADR-008: React/Vite admin and the Decision section records that EPPP builds the admin frontend with React/Vite admin. CI gate: the formatting-lint stage scans every git-tracked text file (including the new ADR and index) — verified locally with the committed policy suite: node --test tests/formatting-policy.test.mjs → 13/13 pass on the branch
The ADR contains Context, Decision, Alternatives, Consequences, Operational impact and Revisit trigger All six ## sections present, in the mandated order, in the committed file (document review per the issue test plan; §46 mandate also recorded in docs/adr/README.md); locally verified against the committed file content (Context line 10 → Revisit trigger line 123, order-checked)
The decision text matches the ADR index entry in section 70 docs/adr/README.md §70 lists | ADR-008 | React/Vite admin | (mirroring the wiki ADR-Index page §70); the ADR's decision text is React/Vite admin — exact match, and the Decision section plus References line name docs/adr/README.md explicitly

Risks / notes

  • Documentation-only change (two markdown files); no runtime, schema, dependency, lockfile or CI-workflow impact. Rollback = revert the branch's commit.
  • CI on this PR runs the full seven-stage pipeline; the only stage touching this change is formatting-lint (tracked-file policy), which passes locally; all other stages are unaffected but will run as usual.
  • The wiki ADR-Index page remains the canonical index; docs/adr/README.md is the in-repo copy so committed ADRs can be verified without leaving the repository (the resolution the ADR-006 reviewer requested, adopted here pre-emptively).
  • docs/adr/README.md is byte-identical to the one on feature/192 (#411), so both open ADR PRs merge cleanly in either order.
  • Out of scope per the brief: the other thirteen E01-S01 ADR subjects are separate task cards.

Refs #194

## What changed Commits the React/Vite admin decision as **ADR-008** for [E01-S01-T07] ADR: React/Vite admin (Refs #194), following the same in-repo verifiability pattern the ADR-006 PR (#411) adopted after the reviewer blocker on the wiki-only index reference: - **`docs/adr/ADR-008-react-vite-admin.md`** (new) — the ADR, with the six required sections in order (§46): - **Context** — modular monolith (ADR-001) whose single image contains built admin assets (Architecture §4); v0.1 scope includes an administration interface (§1) with `/admin/*` → `/api/admin/v1/*` and the initial IA (§20, §42); React/React DOM 19.2.8 (class C) and Vite 8.2.2 + `@vitejs/plugin-react` 6.1.0 already pinned in the golden tuple and build toolchain (Technology-Stack §5.2, §5.3, §7); no RSC in v1 (Technology-Stack §6); the admin app is not implemented yet (`apps/server` is the Fastify health shell, no `apps/admin`), so the ADR records the decision ahead of the code - **Decision** — EPPP builds the admin frontend with **React/Vite admin**: a React client application built with Vite (React 19.2.8, Vite 8.2.2, exact-pinned class C), served by the same application image (ADR-001, §4), under `/admin/*` calling the admin API at `/api/admin/v1/*`; deliberately separate from the public zero-JS SSR pipeline (ADR-007, §19.1); decision text matches the ADR index entry (§70 of `docs/adr/README.md`) - **Alternatives** — server-rendered admin through the public SSR pipeline (rejected), separate admin framework such as Next.js/Angular/Vue (rejected), framework-less Vite (rejected), build-time SSG admin (rejected), admin as a separate service/image (rejected) - **Consequences** — positive/negative/neutral trade-offs: one React 19.2.8 technology across public SSR and admin, Vite HMR + in-image static build, admin outside the public byte budget; client JS/runtime shipped to authenticated admin users, a new CI build/test surface (Vitest, Playwright), versioned `/api/admin/v1/*` contract, authenticated security surface (ADR-019) - **Operational impact** — `apps/admin` builds to static assets served behind `/admin/*` from the same image (no separate service/deployment); SPA calls the admin API at `/api/admin/v1/*`; CI `build-apps` stage globs `apps/**` and picks the admin up automatically; today rollback is reverting this doc commit - **Revisit trigger** — admin requirements the React/Vite SPA model cannot meet (§68 gates), React/Vite major moves in the golden tuple (ADR-026 lane), ADR-009/ADR-010 boundary changes, or the single-image model changing (ADR-001) - **`docs/adr/README.md`** (new) — the repository copy of the ADR index (§70): the full index table from the wiki ADR-Index page (including `ADR-008 | React/Vite admin`), the §46 six-sections mandate, the §71 architectural fitness tests and the §68 architecture review gates. Committed ADRs must match their §70 row; the wiki page remains the canonical index. This file is byte-identical to the copy introduced on `feature/192` (#411), so the two open ADR PRs merge without conflict either order. - Documentation-only: no source, manifest, lockfile, workflow or test changes. Rollback is a revert of the commit on this branch. ## Criterion → test table | Acceptance criterion | Test / evidence | | --- | --- | | A committed ADR records React with Vite as the admin frontend (ADR-008) | `docs/adr/ADR-008-react-vite-admin.md` committed on `feature/194` (commit `edbf8cb`); the H1 heading reads `# ADR-008: React/Vite admin` and the Decision section records that EPPP builds the admin frontend with **React/Vite admin**. CI gate: the `formatting-lint` stage scans every git-tracked text file (including the new ADR and index) — verified locally with the committed policy suite: `node --test tests/formatting-policy.test.mjs` → 13/13 pass on the branch | | The ADR contains Context, Decision, Alternatives, Consequences, Operational impact and Revisit trigger | All six `##` sections present, in the mandated order, in the committed file (document review per the issue test plan; §46 mandate also recorded in `docs/adr/README.md`); locally verified against the committed file content (`Context` line 10 → `Revisit trigger` line 123, order-checked) | | The decision text matches the ADR index entry in section 70 | `docs/adr/README.md` §70 lists `\| ADR-008 \| React/Vite admin \|` (mirroring the wiki ADR-Index page §70); the ADR's decision text is **React/Vite admin** — exact match, and the Decision section plus References line name `docs/adr/README.md` explicitly | ## Risks / notes - Documentation-only change (two markdown files); no runtime, schema, dependency, lockfile or CI-workflow impact. Rollback = revert the branch's commit. - CI on this PR runs the full seven-stage pipeline; the only stage touching this change is `formatting-lint` (tracked-file policy), which passes locally; all other stages are unaffected but will run as usual. - The wiki ADR-Index page remains the canonical index; `docs/adr/README.md` is the in-repo copy so committed ADRs can be verified without leaving the repository (the resolution the ADR-006 reviewer requested, adopted here pre-emptively). - `docs/adr/README.md` is byte-identical to the one on `feature/192` (#411), so both open ADR PRs merge cleanly in either order. - Out of scope per the brief: the other thirteen E01-S01 ADR subjects are separate task cards. Refs #194
bot-implementer added 1 commit 2026-08-31 00:57:22 +00:00
docs(adr): record React/Vite admin decision as ADR-008
CI / Stage 1 — Frozen lockfile install (E00-S05-T01) (pull_request) Successful in 44s
CI / Stage 6 — PostgreSQL integration tests (E00-S05-T01) (pull_request) Successful in 1m8s
CI / Stage 4 — Unit tests (E00-S05-T01) (pull_request) Successful in 1m40s
CI / Stage 7 — Build the admin and server applications (E00-S05-T01) (pull_request) Successful in 1m5s
CI / Stage 2 — Typecheck (E00-S05-T01) (pull_request) Successful in 1m8s
CI / Stage 5 — Architecture tests (E00-S05-T01) (pull_request) Successful in 3m7s
CI / Stage 3 — Formatting/lint policy (E00-S05-T01) (pull_request) Successful in 45s
edbf8cb7ea
Commits ADR-008 (React/Vite admin) for [E01-S01-T07], with the six mandated
sections (Context, Decision, Alternatives, Consequences, Operational impact,
Revisit trigger) per ADR index 46, and adds docs/adr/README.md as the
repository copy of the ADR index (section 70) so the decision-text match is
verifiable inside the repo. Documentation-only: no source, manifest,
lockfile, workflow or test changes.
kpcto merged commit c1020353a0 into main 2026-08-31 01:11:36 +00:00
kpcto deleted branch feature/194 2026-08-31 01:11:36 +00:00
Sign in to join this conversation.