docs/internals/adr/gaps/README.md
Part of Architecture Evolution - the reactive lens for tracking design limitations discovered through production.
This directory tracks architecture gaps - observations and learnings that may warrant future ADRs but aren't yet ready for formal treatment.
| Lens | This Directory |
|---|---|
| Characteristics (Proactive) | "What we need" - see ADRs |
| Gaps (Reactive) | You are here - "What we learned" |
| Deviations (Pragmatic) | "What we accepted" - see deviations/ |
A gap may:
Gaps capture:
Create a gap document when you observe:
Don't create a gap for: bugs (use issues), feature requests (use roadmap), or decisions already made (use ADRs).
Discovered → Open → Investigating → ADR-Drafted → Closed
↓
(Won't Fix) → Closed
| Status | Meaning |
|---|---|
| Open | Problem identified, not yet investigated |
| Investigating | Actively researching solutions |
| ADR-Drafted | Solution chosen, ADR written |
| Closed | Resolved (via ADR) or Won't Fix |
# GAP-XXX: [Title]
**Status**: Open | Investigating | ADR-Drafted | Closed
**Discovered**: YYYY-MM-DD
**Context**: [Incident/Scale test/Review that surfaced this]
## Problem
[1-2 paragraphs describing the issue]
## Evidence
[Metrics, logs, commands, observations that demonstrate the problem]
## State of the Art
## Potential Solutions
- **Option A**: [Description]
- **Option B**: [Description]
- **Option C**: [Description]
## Signal Impact
Which signals are affected (metrics, traces, logs)? Does the gap affect all three or just one?
## Impact
- **Severity**: Low | Medium | High | Critical
- **Frequency**: Rare | Occasional | Common
- **Affected Areas**: [Components]
## Next Steps
- [ ] Action item 1
- [ ] Action item 2
## References
- [Related ADR](../NNN-title.md)
- [External link](https://...)
Gap files use sequential numbering: 001-short-description.md
| Gap | Title | Status | Severity |
|---|---|---|---|
| 001 | No Parquet Split Compaction | Open | High |
| 002 | Fixed Hardcoded Sort Schema | Open | Medium |
| 003 | No Time-Window Partitioning at Ingestion | Open | High |
| 004 | Incomplete Split Metadata for Compaction | Open | High |
| 005 | No Per-Point Deduplication | Open | Medium |
| 006 | No Independent Auto-Scaling | Open | High |
| 007 | No Parquet Metadata Caching | Open | High |
| 008 | No High Query Rate Optimization | Open | High |
| 009 | No Leading Edge Prioritization | Open | High |
| 010 | No Multi-Level Data Caching or Query Affinity Optimization | Open | High |
| 011 | No Planner-Level Legacy Promotion | Open | Medium |
| 012 | Parquet Merge Executor Downloads Inputs Instead of Streaming Them | Open | Medium |