Why this matters
The bug. Go's zero value for a map is nil, not {}. Reads from a nil map are fine (return the zero value for the element type) — but writes panic at runtime. The bug doesn't fire until the first Track call, which usually means it doesn't show up in unit tests that only construct the struct.
The fix. Initialize the map in the constructor. Use make(map[K]V) or a literal map[K]V{}.
Adjacent gotcha. Slices have the opposite property — a nil slice happily accepts append. The mental model 'nil X is usable for reads but not writes' is a Go-ism worth memorizing.
Review heuristic
Search the diff for ! non-null assertions, unwrap() calls, and as Type casts. Each is an assertion the author is making to the compiler. Each needs to be either justified in a comment or replaced with a real null check.
External reference: CWE-476: NULL Pointer Dereference.