Files
settled-reach/docs/sprints/sprint-5/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

91 lines
3.3 KiB
Markdown

---
title: "Sprint 5 — CI Briefing"
description: "Pre-commit FactId typo check validation hook"
type: sprint
status: archived
sprint: 5
team: "ci"
---
# Sprint 5: Live — CI Tasks
**Goal:** Content at scale — FRIEND packs, PC-as-NPC authoring, NPC style guide
**Branch:** `ci`
**Agents:** Justine (CI/CD lead)
## New Tickets
| # | Title | Blocked by |
|---|-------|------------|
| #393 | Pre-commit FactId typo check | — |
Use `db/connectors/ticket show <id>` for full details.
## Key Decisions
- `decisions/content.md` — D-035 (tag taxonomy with FactId references)
- `decisions/architecture.md` — D-030 (testability architecture)
## Notes
### #393: Pre-commit FactId typo check
**What exists:**
- Content directory structure at `content/`
- YAML schema files in `content/_schema/`
- Canonical facts defined in global knowledge files (check `content/global/knowledge/`)
- `make validate-content` CLI from Sprint 4 (#392)
- Pre-commit hooks infrastructure at `.config/pre-commit/` or similar
**What to deliver:**
- Grep-based pre-commit check validating FactId references in YAML content files against canonical facts.yaml
- Cheap v0.1 bridge until full cross-reference validation lands in later sprint
- Should catch typos like `npc_identity.kael_davan.occupation` vs `npc_identity.kael_davan.job` before commit
**Implementation approach:**
1. Extract canonical FactId list from global knowledge YAML files
2. Extract all FactId references from campaign content YAML files
3. Compare: flag any referenced FactId that doesn't exist in canonical list
4. Hook into pre-commit (runs before git commit, fails if violations found)
**File location:**
- Script: `.config/pre-commit/check-fact-ids.sh` or `tooling/lint/check-fact-ids.py`
- Configuration: `.pre-commit-config.yaml` (if using pre-commit framework) or `.git/hooks/pre-commit`
**Performance constraint:** Must run fast (<2 seconds) — content authors will run this on every commit. Grep-based approach should be sufficient for v0.1 scale (~hundreds of facts, ~tens of content files).
**Integration:** Coordinate with copy team (Mellanie, Paula) on FactId naming conventions. Review `content/global/knowledge/entity-attributes.yaml` and similar files for canonical fact definitions.
**Gotcha:** Some FactIds might be templated or dynamic (role-based, not hardcoded). Check with content team on how to handle template slots like `{role}.occupation`.
**Test plan:**
1. Create test content file with valid FactId → pre-commit passes
2. Create test content file with typo FactId → pre-commit fails with clear error
3. Fix typo → pre-commit passes
---
## Sprint Success Criteria
By end of Sprint 5, CI team delivers:
1. **FactId typo check** — pre-commit hook operational, tested, documented
2. **Integration with content workflow** — copy team uses check during FRIEND pack authoring
This is a single-ticket sprint for CI. Goal is content quality assurance — prevent FactId typos from reaching main branch during heavy content authoring sprint.
## PR Workflow
When ready to submit, create a PR with `tea` CLI:
```bash
tea pr create \
--repo jpmschweitzer/settled-reach \
--login schweitz \
--title "feat(ci): pre-commit FactId validation" \
--description "Sprint 5 CI delivery - see docs/sprints/sprint-5/ci.md" \
--base main \
--head ci
```