carlos / platform Public
Review brief: GeoIP plan 1, the built branch
You are GPT-6 reviewing code independently of its author. Your output is a findings report, not an edit. Do not modify any file.
What to read
- The diff:
git diff 9bed97b5..HEAD -- . ':!docs'on branchgeoip-for-apps(9bed97b5 is the base, origin/main when the branch was cut). Read every changed Go file in full where it matters, not just the hunks. - The spec it implements:
docs/superpowers/specs/2026-10-06-platform-geoip-design.md(rev 9, nine review rounds). §0's R rulings and D decisions are fixed. - The plan and its review dispositions:
docs/superpowers/plans/2026-10-06-platform-geoip-plan1.md(the dispositions table at the end says where the code is authoritative over the plan text).
What matters most
- Security of the header contract (spec §7, §8): any path where a client-chosen value reaches an app in any
X-Carlos-Geo-*header orX-Carlos-Hop-Geo; any path where an edge locates something that is not the visitor (the box, the sender, the hub); trust granted to a transport that should not have it. Readinternal/edge/edge.goServeHTTP end to end for every branch that can reach a proxy, a static handler, a redirect, a cached replay or an activator wake, and check each sees the stripped and decided headers. - Concurrency and crash safety:
internal/edge/geoipmirror.go,internal/geo/swappable.go,internal/console/geoippublish.go(slot ownership across the handler-to-job handoff, panics, every error path releasing the mutex exactly once),internal/console/apisystemgeoip.go. - Resource bounds: every read of bucket or upload data capped while copying; temp files removed on every path.
- Behaviour changes to existing code:
geo.Locate,release.Storeimplementations, analytics merge and read paths, the systemJob type, the tunnelclient Loop, status heartbeats. Anything that changes what an existing caller sees. - Tests that would pass for the wrong reason.
- Cross-compilation (darwin, windows) and anything Linux-only.
Output
Numbered findings, most severe first: severity (P1 = a bug that would ship or a security hole, P2 = likely wrong in some real case, P3 = clarity or maintainability), file:line, a concrete failure scenario, and a fix. End with a one-line verdict: merge-ready, or revise.