Files
tcptop/.planning/RETROSPECTIVE.md
Zachary D. Rowitsch fb8463507c chore: complete v1.0 milestone — archive roadmap/requirements, update PROJECT.md
All 3 phases shipped (8 plans, 29 requirements). macOS backend dropped
from v1 scope. Archives created in .planning/milestones/.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-22 01:32:19 -04:00

60 lines
2.7 KiB
Markdown

# Project Retrospective
*A living document updated after each milestone. Lessons feed forward into future planning.*
## Milestone: v1.0 — MVP
**Shipped:** 2026-03-22
**Phases:** 3 | **Plans:** 8 | **Tasks:** 17
### What Was Built
- eBPF data pipeline with 5 kernel programs, async RingBuf, and /proc bootstrap for pre-existing connections
- Interactive Ratatui TUI with sortable table, bandwidth heat-map coloring, live '/' filtering, and keyboard navigation
- CSV logging with headless mode, man page, .deb/.rpm packaging config, and 15 automated tests
- Platform abstraction trait (`NetworkCollector`) ready for future backends
### What Worked
- Data-flow-first phase ordering: building the pipeline first meant every subsequent phase had real data to work with
- `cfg(target_os)` gating from day one kept the codebase compiling on macOS during development while targeting Linux
- Tight plan scoping (2-3 plans per phase) kept execution focused and summaries meaningful
- eBPF RingBuf over PerfEventArray — simpler API, no per-CPU buffer management
### What Was Inefficient
- macOS backend (Phase 4) was planned from the start but ultimately dropped — research during discuss-phase revealed PKTAP fidelity gaps that should have been investigated earlier
- Some Phase 3 success criteria referenced Homebrew (OPS-04) which was always tied to macOS — tighter requirements scoping would have caught this earlier
### Patterns Established
- Three-crate workspace: `tcptop-common` (shared eBPF/userspace types), `tcptop-ebpf` (kernel programs), `tcptop` (userspace binary)
- `repr(C)` union types for eBPF ↔ userspace communication
- Headless branch before `ratatui::init()` to prevent terminal corruption in `--log` mode
- Man page at `doc/` (workspace root), not inside crate directory
### Key Lessons
1. Scope macOS/cross-platform support based on data fidelity analysis, not just API availability — PKTAP exists but provides fundamentally less data than eBPF kprobes
2. Keep the first milestone Linux-only for eBPF tools; cross-platform can be a separate milestone with its own requirements
### Cost Observations
- Model mix: 100% opus
- Sessions: ~3 sessions over 1 day
- Notable: Entire v1.0 from greenfield to shipped in under 24 hours
---
## Cross-Milestone Trends
### Process Evolution
| Milestone | Phases | Plans | Key Change |
|-----------|--------|-------|------------|
| v1.0 | 3 | 8 | Initial milestone — established workspace patterns, eBPF pipeline, TUI conventions |
### Cumulative Quality
| Milestone | Tests | LOC | Crates |
|-----------|-------|-----|--------|
| v1.0 | 15 | 2,846 | 3 |
### Top Lessons (Verified Across Milestones)
1. (First milestone — lessons will be cross-validated as more milestones complete)