# Phase 8: Gitea CI - Discussion Log > **Audit trail only.** Do not use as input to planning, research, or execution agents. > Decisions are captured in CONTEXT.md — this log preserves the alternatives considered. **Date:** 2026-06-11 **Phase:** 8-Gitea CI **Areas discussed:** Dev-stack bring-up in CI, Workflow topology & jobs, Docker image tag strategy, Failure artifacts & browser matrix --- ## Dev-stack bring-up in CI | Option | Description | Selected | | -------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------- | -------- | | Bare processes + service MariaDB | MariaDB as a Gitea service container; API as background `pnpm dev:api` with DEV_AUTH_BYPASS; Playwright webServer starts Vite. No docker-in-docker. | ✓ | | docker compose dev override | Run docker-compose.yml + dev override inside the runner; adds image-build time + docker-in-docker. | | | Production image for harness | Build prod image, run harness against API-served PWA on :3000; diverges from Phase 7 dev-server contract. | | **User's choice:** Bare processes + service MariaDB **Notes:** Reuses the MariaDB service container already needed by the API-integration tests; matches the Phase 7 harness contract exactly. --- ## Workflow topology & jobs | Option | Description | Selected | | ----------------------- | ------------------------------------------------------------------------------------------------------ | -------- | | One file, parallel jobs | Single workflow; PR→main runs fast-checks in parallel with integration + harness; push→main publishes. | ✓ | | Two files | Separate ci.yml + publish.yml; cleaner split, duplicated setup. | | | One file, linear job | Single sequential job; simplest, slowest feedback. | | **User's choice:** One file, parallel jobs **Notes:** Fast feedback prioritized; minor setup duplication across jobs accepted. --- ## Docker image tag strategy | Option | Description | Selected | | ------------------------------------- | ---------------------------------------------------- | -------- | | latest + short SHA | :latest + : | | | Short SHA only | Immutable per-commit only | | | latest only | Single moving tag | | | semver from package.json | Version field + latest | | | **latest + milestone short (custom)** | :latest + :-, e.g. v1.1-4303a1b | ✓ | **User's choice:** latest + `v1.1-4303a1b` (milestone prefix + short SHA), confirmed in follow-up over a 3-tag variant and a no-milestone variant. **Notes:** Milestone string read from PROJECT.md/ROADMAP, not hardcoded; SHA tag immutable for rollback. --- ## Failure artifacts & browser matrix | Option | Description | Selected | | --------------------------------- | ---------------------------------------------------------------------------- | -------- | | Upload on failure + both profiles | iPhone/WebKit + Pixel/Chromium; upload traces/screenshots/videos on failure. | ✓ | | Upload on failure + Chromium only | Pixel/Chromium only; faster, loses iOS-engine coverage. | | | Both profiles, no artifacts | Full matrix, log-only failures. | | **User's choice:** Upload on failure + both profiles **Notes:** Full mobile coverage + debuggable failures. `reporter: 'github'` may not render in Gitea — verify in runner probe, fall back if needed. --- ## Claude's Discretion - Exact job names/step ordering, pnpm cache key, fast-checks split. - API launch mechanism (`pnpm dev:api` vs built `node dist`) as long as `:3000` is reliably ready under DEV_AUTH_BYPASS. - Registry hostname / image repo path. ## Deferred Ideas - ROADMAP status conflict (line 29 "completed" vs line 204 "Not started", no artifacts) — bookkeeping fix, not Phase 8 scope.