Files
settled-reach/whatsinagame/templates/DEVOPS.md
T
jpmschweitzerandClaude Opus 4.6 dd75203d11 refactor(process): replace persistent team worktrees with ephemeral sprint branches
Persistent worktrees (server, client, copy, audio, visual, ci, planning,
maintenance) caused agents crossing boundaries, stuck agents leaving
uncommitted work, and index.lock collisions. Replaced with ephemeral
sprint branches (sprint-{N}/{team}) and worktrees created on demand.

Changes:
- New start-sprint script replaces start-session (dynamic tabs per active team)
- Sprint teardown integrated into sprint-start skill (A1c step)
- SR_DB_PATH env var for database access from any directory
- CLAUDE.md team boundaries rewritten (scope-based, not directory-based)
- Agent Rule 0 updated to team scope dirs instead of worktree isolation
- PR review uses git show instead of cross-directory reads
- Briefing template updated for sprint-{N}/{team} branch naming
- Deleted worktree-update skill (obsolete)
- Removed WORKTREE_TEAM env var and cross-directory Read permissions
- All 8 persistent worktrees removed

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-05 00:33:02 +02:00

118 lines
3.0 KiB
Markdown

# DevOps
Build, test, lint, and CI procedures for {Project Name}.
## Quick Start
```bash
make setup # Initialize dev environment
make # Show all available targets
```
## Database
The project uses SQLite for ticketing and decision tracking.
### Initialize
```bash
tooling/db/sqlite-init
```
### Query
```bash
tooling/db/sqlite-query "SELECT * FROM tickets WHERE status='in_progress'"
tooling/db/sqlite-exec "UPDATE tickets SET status='done' WHERE id=1"
```
**Never use the `sqlite3` CLI** — it crashes in Claude Code (std::bad_alloc). Use the wrapper scripts.
### Ticket CLI
```bash
tooling/db/ticket list [--status S] [--sprint N] [--team T]
tooling/db/ticket show <id>
tooling/db/ticket create --title "Title" --team T --priority P
tooling/db/ticket assign <id> --agent name
```
### Sprint CLI
```bash
tooling/db/sprint status # Current sprint progress
tooling/db/sprint status --team T # Team-scoped view
tooling/db/sprint start-work [--team T] # Full context dump for starting work
tooling/db/sprint prepare # Prepare next sprint
tooling/db/sprint start # Activate a planned sprint
tooling/db/sprint stop # Complete an active sprint
```
## Decision Tracking
Decisions live in `decisions/*.md` domain files and sync to SQLite:
```bash
make decisions-sync # Parse decisions/*.md into SQLite
make decisions-coverage # Decision-to-ticket coverage report
make decisions-active # List all active confirmed decisions
make decisions-orphan # Decisions without associated tickets
```
## Document Search (optional)
If Qdrant + Ollama are configured for semantic search:
```bash
tooling/db/qdrant-health # Check service status
tooling/db/qdrant-search "query text" # Semantic search
tooling/db/qdrant-index path/to/doc.md # Index a document
tooling/db/qdrant-count # Collection stats
```
## Git Hooks
Install hooks:
```bash
make setup-hooks
```
Hook directory: `.config/hooks/`
The pre-commit hook runs project-specific validation checks. Add new checks by editing `.config/hooks/pre-commit` and adding `run_check` calls.
## Pre-PR Checklist
```bash
make pre-pr
```
This runs:
1. Decision sync (ensures SQLite index is current)
2. {Add project-specific checks as needed}
## Sprint Branch Workflow
Teams work on ephemeral sprint branches (`sprint-{N}/{team}`). The `start-sprint`
script creates worktrees under `.sprint/` for parallel team work:
```
{parent}/
main/ # Permanent — integration branch
.sprint/sprint-{N}/{team}/ # Ephemeral — created per sprint, deleted after close
{db_name} # Shared ticketing database
```
### Branch management
```bash
# Start sprint session (creates worktrees + terminal tabs)
./start-sprint [sprint-number]
# Clean up after sprint close
.claude/skills/sprint-start/scripts/sprint-teardown.sh {N}
```
**Protected branches** (never delete): `main`.