Remove the db/connectors → tooling/db/ symlink added in Sprint 21 (#274) and migrate all references to use tooling/db/ directly. - Delete tracked symlink from db/connectors - Remove duplicate db/connectors/* permission patterns from settings - Update project-structure.md to reflect removal - Move whatsinagame/static/db/connectors/ to whatsinagame/static/tooling/db/ - Update 20 whatsinagame template, skill, and test files - Update comment references in client/tests/test_anti_tedium.gd - Historical docs (old sprint briefings, changelog, discussions) left as-is Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2.6 KiB
2.6 KiB
Decision Records
This directory contains the project's decision records, organized by domain. Decisions are the source of truth for all architectural, design, scope, and process choices.
Domain Files
| File | Domain | Contents |
|---|---|---|
architecture.md |
Architecture | Technical foundation — how we build, tools, patterns, infrastructure |
scope.md |
Scope | Project concept, target audience, platform, feature boundaries |
process.md |
Process | Team workflow, communication, development process |
questions.md |
Open Questions | Unresolved questions requiring team discussion |
rejected.md |
Rejected | Options considered and rejected, with rationale |
Decision Types
- D-NNN — Confirmed decisions (active or superseded)
- Q-NNN — Open questions awaiting resolution
- R-NNN — Rejected alternatives (kept for historical context)
Adding a Decision
- Choose the appropriate domain file
- Assign the next available ID in sequence
- Use this format:
### D-NNN: Decision title
- **Date:** YYYY-MM-DD
- **Decision:** What was decided
- **Rationale:** Why this option was chosen
- **Raised by:** Who proposed or surfaced the question
- **Dissent:** Any disagreement, or "None"
- Run
make decisions-syncto update the SQLite index
Querying Decisions
Via CLI (preferred)
# List all active confirmed decisions
make decisions-active
# Find decisions without associated tickets
make decisions-orphan
# Check decision-to-ticket coverage
make decisions-coverage
Via SQLite wrapper
# All active decisions
tooling/db/sqlite-query "SELECT id, domain, title FROM decisions WHERE status='active' AND type='confirmed' ORDER BY domain, id"
# Decisions in a specific domain
tooling/db/sqlite-query "SELECT id, title FROM decisions WHERE domain='architecture' AND status='active'"
# Search by keyword
tooling/db/sqlite-query "SELECT id, domain, title FROM decisions WHERE title LIKE '%keyword%' OR decision LIKE '%keyword%'"
# Decisions linked to a specific ticket
tooling/db/sqlite-query "SELECT d.id, d.title FROM decisions d JOIN tickets t ON d.id = t.decision_ref WHERE t.id = 42"
# Open questions
tooling/db/sqlite-query "SELECT id, title FROM decisions WHERE type='question' AND status='active'"
Via Qdrant (semantic search)
tooling/db/qdrant-search "asymmetric information design"
Superseding a Decision
When a decision is replaced:
- Add
- **Status:** Superseded by D-NNNto the original - Reference the original in the new decision's rationale
- Run
make decisions-sync