Review: Remove non-functional gRPC funnel
Verdict: READY
Template Completeness
- [x] Type — Bug
- [x] Lineage — standalone, discovered during Mac agent setup (#174)
- [x] Repo — forgejo_admin/pal-e-platform
- [x] What Broke — gRPC funnel terminates TLS as HTTP/1.1, breaks HTTP/2 binary framing
- [x] Repro Steps — kubectl get pods, kubectl logs, confirms unused
- [x] Expected Behavior — no non-functional infrastructure running
- [x] Environment — resource name + namespace identified
- [x] Acceptance Criteria — 4 criteria, all verifiable
- [x] Related — references #173 (origin) and #175 (replacement)
Traceability
- [ ] story:X label — missing. Acceptable: this is foundational cleanup of dead infrastructure, not user-facing.
- [x] arch:ci-pipeline label — present on board item #401
- [x] Forgejo issue — #182, open
File Targets
- [x]
terraform/modules/networking/main.tf:259-286— verified:kubernetes_ingress_v1.woodpecker_grpc_funnelresource exists at lines 259-286, proxies port 9000 with funnel annotation, hostname "woodpecker-grpc" - [x]
terraform/main.tf:174-177— verified:movedblock exists that relocated this resource from root to networking module. Must also be removed.
Note: The issue body references the resource path as
terraform/main.tf which was accurate pre-modularization. The resource now lives in terraform/modules/networking/main.tf after the state splitting (#197). The moved block in terraform/main.tf also needs removal. Agent must target both files.Repo Placement
OK — issue filed on pal-e-platform, resource lives in pal-e-platform. Single-repo fix.
Dependencies
- Board item #394 (Tailscale Connector — k8s subnet router, issue #175) — done. This is the replacement mechanism. No blocker.
- Board item #411 (Harbor connectivity timeout, issue #184) — in_progress. Unrelated to funnel removal.
- No items blocked by this ticket.
- No items blocking this ticket.
Acceptance Criteria
- [x] "woodpecker_grpc_funnel resource removed from terraform/main.tf" — verifiable via grep after PR. Note: ticket says main.tf but actual target is modules/networking/main.tf + moved block in main.tf.
- [x] "tofu apply destroys the funnel pod" — verifiable via CI apply output
- [x] "No woodpecker-grpc node in tailscale status" — verifiable post-apply
- [x] "Mac agent still connected (uses subnet router, not funnel)" — verifiable via Woodpecker UI or kubectl
All 4 criteria are machine-verifiable. The first criterion's file path is slightly stale (see File Targets note above) but the intent is clear.
Blast Radius
- Tailscale ACL uses blanket
autogroup:member + tag:k8s → funnelpolicy (networking/main.tf:82-86). Removing the ingress resource does not require ACL changes. - No Salt states reference woodpecker-grpc.
- No network policies reference the gRPC funnel.
- The Woodpecker HTTP funnel (
woodpecker_funnel, port 80) is a separate resource and is NOT affected. - No other services depend on the woodpecker-grpc hostname.
- Low blast radius — this is a pure deletion of an isolated, non-functional resource.
Decomposition (5-minute rule)
- 2 file targets in 1 repo — under threshold
- 4 acceptance criteria — under threshold
- Estimated agent work: ~2 minutes (delete resource block + delete moved block + tofu fmt) — under threshold
Recommendation
No action needed — ticket is READY for execution. One minor note for the implementing agent: the issue body says "removed from terraform/main.tf" but the resource was modularized to
terraform/modules/networking/main.tf (lines 257-286). The moved block at terraform/main.tf lines 174-177 must also be deleted. Both changes are straightforward deletions.