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

2.7 KiB

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

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)