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>
60 lines
2.7 KiB
Markdown
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)
|