--- title: "Sprint 10 — CI Briefing" description: "Performance baseline tooling, CI pipeline Gitea Actions, relationship consistency validation" type: sprint status: archived sprint: 10 team: "ci" --- # Sprint 10: Prove — CI Tasks **Goal:** Expand the Gauntlet test suite with new rooms and cross-room scenarios, wire the audio architecture end-to-end, and complete client UX polish from Sprint 9 carry-overs — proving the full system holds together. **Branch:** `ci` **Agents:** Justine (build/deploy), Hoshe (QA review) --- ## New Tickets | # | Title | Blocked by | |---|-------|------------| | #499 | Performance baseline tooling (make perf-baseline) | #487 (done) | | #510 | CI pipeline (Gitea Actions YAML, 3-tier) | — | | #515 | Bidirectional relationship consistency warning (content validation check 9) | #464 (done) | Use `db/connectors/ticket show ` for full details. --- ## Key Decisions - `decisions/architecture.md` — D-030 (testing architecture phases), D-026 (100ms tick budget) - `decisions/scope.md` — D-038 (audio in v0.1 — audio asset presence/absence affects `make ci` behavior) --- ## Notes **#499 — Performance baseline tooling** - Existing: `Makefile` has `make pre-pr`, `make test-server`, `make test-client` targets. The test infrastructure (Sprint 9) is complete. No `perf-baseline` target exists yet. - Deliver: `make perf-baseline` target. Runs the server benchmark suite, captures tick timing, memory usage, and entity count scaling metrics, outputs results to `tests/perf/`. The baseline file should be committed and tracked in git so future runs can detect regressions. - Integration: Server #500 (content scaling test) feeds into this — coordinate timing so #499 can include the content scaling numbers in the baseline output. If #500 isn't merged, the perf baseline can run with existing content and be updated when #500 lands. **#510 — CI pipeline (Gitea Actions YAML, 3-tier)** - Existing: `make pre-pr` exists and is the manual gate. Gitea Actions self-hosted runner is available. - Deliver: A Gitea Actions workflow YAML (`/.gitea/workflows/ci.yaml` or `.gitea/workflows/`) implementing three tiers: - Commit tier: `<2min` — lint only (`make lint-server`, `make lint-client`) - PR merge gate: `<15min` — wraps `make pre-pr` - Nightly: `<30min` — full build + all tests + content validation - **Deferred condition**: This ticket is backlog-tagged "deferred until lead greenlights." Confirm with Team Leader before starting. If greenlit, coordinate with Tyre on self-hosted runner configuration. - Integration: Wraps existing `make` targets — should require zero changes to those targets. **#515 — Bidirectional relationship consistency warning** - Existing: Content validation runs via `tooling/validate-content`. Phase 1-2 checks are complete (#464 done). Check 9 is advisory. - Deliver: Advisory warning (non-blocking, not an error) when NPC A has a relationship to NPC B but no reciprocal entry exists in NPC B's relationships. Output format: `WARN: NPC 'kael' has relationship to 'sera' but 'sera' has no reciprocal entry.` Effort: 0.25d. - Non-obvious: One-sided relationships are sometimes intentional (faction member knows of faction leader, not vice versa). The warning is advisory, never a hard failure. --- ## Dependency Chain ``` #499 (perf baseline) — standalone (server #487 done); benefits from server #500 merging first #510 (CI pipeline) — standalone; greenlight from lead required before start #515 (bidirectional warning) — standalone (#464 done) ``` --- ## PR Workflow When ready to submit, create a PR with `tea` CLI. All flags are required to avoid TTY prompts (see CLAUDE.md "Gitea access" section): ```bash tea pr create --repo jpmschweitzer/settled-reach --login schweitz --title "feat(ci): sprint 10 prove — ci" --description "body" --base main --head ci ```