docs: add EIP-eviction and error-throttle rollout watch items
Self-review catch: backhaulTransports never evicting on EIP reassociation and the unthrottled backhaul 502 ErrorHandler are both minor deferred findings from Task 4's review that are genuinely rollout-relevant (box replacement, dial-failure noise during arming) even though neither was T7-tagged in the ledger.
1 file changed,
+23
−0
docs/superpowers/plans/2026-08-22-multi-region-backhaul.md+23 −0
diff --git a/docs/superpowers/plans/2026-08-22-multi-region-backhaul.md b/docs/superpowers/plans/2026-08-22-multi-region-backhaul.md| index 743c01469..44ff9d203 100644 |
| --- a/docs/superpowers/plans/2026-08-22-multi-region-backhaul.md |
| +++ b/docs/superpowers/plans/2026-08-22-multi-region-backhaul.md |
| @@ -696,6 +696,29 @@ plan's own spec Part 4 describes. |
| something this branch introduces; recorded here as the cross-ref |
| Task 5's review asked for, not as new scope for this plan. |
| +### Deferred code-quality items worth a rollout-time watch |
| + |
| +13. **`backhaulTransports` is keyed by EIP and never evicts.** Task 4's |
| + review flagged this as a minor, deferred item, and it turns real once |
| + boxes actually get replaced: an EIP re-association (box replacement, |
| + which the fleet already does routinely — see the IMDS-blip EIP-hold |
| + logic Task 1 built) leaves the OLD EIP's cached `*http.Transport` |
| + (`internal/edge/edge.go:184`, `backhaulTransports sync.Map`) stranded |
| + in the map forever rather than pruned — bounded by the number of |
| + distinct EIPs a deployment's boxes have ever held over its lifetime, |
| + not by anything that self-cleans. Not a correctness bug (a new EIP |
| + gets its own entry; the stale one is just dead weight), but worth |
| + revisiting once box replacement during multi-region operation is a |
| + routine event rather than a hypothetical. |
| +14. **The backhaul 502 `ErrorHandler` is unthrottled** |
| + (`logThrottled` key `"backhaul-error "+box`, per-box but every dial |
| + failure still logs). During the dev/Kass and flagship-AU rollout |
| + exercises (item 3 above), a misconfigured home map or a genuinely |
| + dead box will produce one line per failed request rather than a |
| + throttled cadence — expected noise during the arming window, not a |
| + defect, but flagged so it isn't mistaken for something worse the |
| + first time it's seen live. |
| + |
| **Full gate** (env `GOCACHE=/tmp/claude-1001/gocache GOFLAGS=-mod=mod |
| GOPROXY=off`): `go build ./...`, `go vet ./...`, `GOOS=darwin go build |
| ./...`, `go test ./... -count=1`, `gofmt -l` on touched files — all |