Review: Service onboarding -- namespace, Harbor, ArgoCD, Tailscale funnel

review-1694-2026-07-02 Review

review needs-refinement

Verdict: NEEDS_REFINEMENT

Template Completeness

  • [x] Type -- Feature
  • [x] Lineage -- Standalone
  • [x] Repo -- ldraney/pal-e-services
  • [x] User Story -- present, well-formed
  • [x] Context -- present, describes foundational nature
  • [x] File Targets -- present, with both modify and do-not-touch sections
  • [x] Feature Flag -- none (appropriate for infra ticket)
  • [x] Acceptance Criteria -- 5 items
  • [x] Test Expectations -- present with run command
  • [x] Constraints -- present, references landscaping-assistant pattern
  • [x] Checklist -- present
  • [x] Related -- present

Traceability

  • [x] story:platform-setup label -- Platform Setup
  • [x] story note verified -- story-kalshi-assistant-platform-setup exists in pal-e-docs, listed in project-kalshi-assistant user-stories section
  • [x] arch:iac label -- Infrastructure as Code
  • [ ] arch note MISSING -- [SCOPE] Create architecture note arch-iac for component iac
  • [x] arch:k8s-deploy label -- Kubernetes Deployment
  • [ ] arch note MISSING -- [SCOPE] Create architecture note arch-k8s-deploy for component k8s-deploy
  • [x] Forgejo issue -- https://forgejo.tail5b443a.ts.net/ldraney/kalshi-assistant/issues/7, open

File Targets

  • [x] terraform/k3s.tfvars -- verified: file exists (symlink to ~/secrets/pal-e-services/k3s.tfvars), services map starts at line 193, landscaping-assistant pattern confirmed at lines 203-210 with matching structure (forgejo_repo, image_repo, port 3000, funnel true, source_repo, source_path). No existing kalshi-assistant entry -- clean for addition.

Repo Placement

Issue filed on ldraney/kalshi-assistant but ### Repo section explicitly declares work is in ldraney/pal-e-services. This is an acceptable pattern: project-specific infrastructure tickets are filed on the project repo, with the shared infrastructure repo declared as the target. Work touches only one repo (pal-e-services). No multi-repo issue needed.

Dependencies

This ticket is correctly identified as foundational in Context: "nothing else deploys until this is done." Board analysis confirms downstream dependencies:
  • #1686 Rails app scaffold (sprint:1) -- blocked by this ticket (needs namespace)
  • #1692 DNS + reverse proxy (sprint:1) -- depends on namespace/funnel existing
  • #1693 Keycloak realm (sprint:1) -- depends on namespace existing
  • #1695 Kustomize overlays (sprint:2) -- depends on ArgoCD app existing
  • #1696 CI/CD pipeline (sprint:2) -- depends on Harbor project existing
Dependencies are documented implicitly in Context but not explicitly enumerated. Acceptable for a clearly foundational ticket.

Acceptance Criteria

All 5 criteria are verifiable by an agent:
  • tofu plan -- exits 0 with expected resources (testable)
  • tofu apply -- succeeds (testable, creates real resources)
  • Namespace check -- kubectl get ns kalshi-assistant (testable)
  • Harbor project check -- Harbor API or UI (testable)
  • ArgoCD app check -- argocd app get kalshi-assistant (testable)
Test Expectations section includes a run command: cd ~/pal-e-services && tofu plan -var-file=terraform/k3s.tfvars. Good.

Blast Radius

Low. Adds a new entry to a shared tfvars file without modifying existing entries. The pattern is well-established with multiple existing service entries (landscaping-assistant, believers-elite, mdview, gcal-scheduler, etc.). No downstream consumers affected by addition.

Decomposition Assessment

No decomposition needed:
  • 1 file target in 1 repo
  • 5 acceptance criteria (at threshold, not over)
  • Estimated agent work: under 2 minutes (single block addition following a clear pattern)

Recommendation

  • [SCOPE] Create architecture note arch-iac documenting the IaC patterns (Terraform/OpenTofu modules, tfvars structure, service map convention)
  • [SCOPE] Create architecture note arch-k8s-deploy documenting the k8s deployment pipeline (ArgoCD, Image Updater, namespace provisioning, Tailscale funnel)
These are platform-level architecture notes that would serve all projects using the pal-e-platform infrastructure, not just kalshi-assistant. The ticket scope itself is solid -- clear target, verified pattern, testable criteria. The missing arch notes are a documentation gap, not a scope problem.