Files
settled-reach/docs/sprints/sprint-4/ci.md
T
jpmschweitzerandClaude Opus 4.6 bccdcfcdcb docs(docs): add frontmatter to all sprint briefings
Standardized YAML frontmatter on all 115 sprint briefing files across
sprints 1-26 with title, description, type, status, sprint number, and
team fields.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-14 00:15:45 +01:00

65 lines
2.9 KiB
Markdown

---
title: "Sprint 4 — CI Briefing"
description: "Pre-commit FactId typo check"
type: sprint
status: archived
sprint: 4
team: "ci"
---
# Sprint 4: Feel — CI Tasks
**Goal:** Content conversion and authoring begins — wiki to YAML, content packs, monologue pool
**Branch:** `ci`
**Agents:** Justine (build/deploy), Hoshe (QA)
## New Tickets
| # | Title | Priority | Blocked by |
|---|-------|----------|------------|
| #393 | Pre-commit FactId typo check | medium | — |
Use `db/connectors/ticket show <id>` for full details.
## Key Decisions
- `decisions/content.md` — D-035 (tag taxonomy, FactId references in dialogue/monologue)
- `decisions/architecture.md` — D-030 (testability architecture)
## Notes
**Pre-commit FactId typo check (#393):**
Grep-based pre-commit hook validating FactId references in YAML content files against canonical `content/global/knowledge/facts.yaml`. Cheap v0.1 bridge until full cross-reference validation lands in v0.2 content tooling (C9).
- **What exists:**
- Content schema validation: `make validate-content` (Sprint 3, #392) — checks YAML structure
- Canonical facts file: location TBD (either in `content/global/knowledge/` or `wiki/knowledge/facts.md` — coordinate with copy team on migration plan)
- Pre-commit hook infrastructure: check `.git/hooks/` or `.husky/` directory (if not present, this ticket creates it)
- **What to deliver:** Pre-commit hook script (bash/python) that:
1. Extracts all FactId references from YAML files in `content/` (searches for `prerequisite:` maps, `fact_id:` fields, or similar per schema)
2. Reads canonical FactId list from source of truth file
3. Fails commit if any referenced FactId is not in canonical list
4. Prints clear error: "Unknown FactId 'foo_bar' referenced in content/campaigns/.../detective/arrival.yaml line 47"
- **Scope:** Structural validation only. Does NOT validate knowledge state progression logic (e.g., "can this FactId actually reach KnowsDetails?"). That's v0.2 semantic validation.
- **Integration:** Runs automatically on `git commit`. Should be fast (<100ms) — this is a hot-path check that authors encounter frequently. Consider caching canonical FactId list.
- **Files:** `.git/hooks/pre-commit` or `.husky/pre-commit` (create if missing), validation script in `tooling/validate-factids.sh` or similar
This is a quality-of-life improvement for content authors. Prevents typos from reaching the repo and getting caught only when the game tries to load content.
## Dependency Chain
```
#393 (FactId typo check) → standalone (quality-of-life for content authors)
```
No blockers. No blocking other tickets. Can be implemented any time during Sprint 4.
## 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): description" --description "body" --base main --head ci
```