Review: Spike: Route palinks.app domain to production (re-review)

review-1377-2026-06-07-b Review

review ready

Verdict: READY

Re-review of board item #1377. Previous review (review-1377-2026-06-07) returned NEEDS_REFINEMENT with 3 SCOPE issues — all three have been resolved.

Previous Findings Resolution

  • [x] project-palinks note created — has user-stories section with story:custom-domain entry
  • [x] arch-palinks note created — architecture note exists (slug: arch-palinks, project: palinks)
  • [x] Story entry verified — story:custom-domain — Route palinks.app to production listed in project-palinks user-stories section

Template Completeness

  • [x] Type — Spike
  • [x] Lineage — Standalone, domain purchased 2026-06-07
  • [x] Repo — Multiple (pal-e-platform, pal-e-services, pal-e-deployments, palinks)
  • [x] Question — Well-formed with 5 sub-questions covering funnel, redirect vs canonical, TLS, per-repo changes, cost/complexity
  • [x] Deliverables — docs/custom-domain.md + follow-up tickets
  • [x] Time-box — 2 hours
  • [x] Related — Lists all 4 affected repos
All required spike template sections present and well-formed.

Traceability

  • [x] story:custom-domain label — present on board item
  • [x] story note verified — found in project-palinks user-stories section
  • [x] arch:palinks label — present on board item
  • [x] arch note verified — arch-palinks note exists in pal-e-docs (note_type: doc, project: palinks)
  • [x] Forgejo issue — ldraney/palinks#15, open

File Targets

Spike type — no code file targets to verify. Deliverable target docs/custom-domain.md does not exist yet (expected; the spike creates it).
  • [x] docs/ directory — exists with 6 files, deliverable path is valid
  • [x] config/environments/production.rb — confirmed config.hosts, assume_ssl, force_ssl are currently commented out, validating that the spike question about Rails host config is relevant
  • [x] docs/infrastructure.md — already cross-references this spike issue and notes palinks.app purchase

Repo Placement

OK. Issue filed on ldraney/palinks (primary service). Correctly identifies all 4 repos that may need changes. Spike investigation is appropriately scoped to the primary service repo; follow-up implementation tickets will be created per-repo as a deliverable.

Dependencies

No blocking dependencies. All other backlog items (#1378 Keycloak spike, #1379 visibility tiers, #1380 Dockerfile alignment, #1381 seed data) are independent. Domain purchase on GoDaddy is already complete.

Acceptance Criteria

  • [x] docs/custom-domain.md created — verifiable by file existence check
  • [x] Follow-up tickets created — verifiable by checking Forgejo issues post-spike
Both criteria are agent-verifiable. No missing criteria for a spike of this scope.

Blast Radius

Investigation-only spike. No code changes, no downstream impact. docs/infrastructure.md already references the spike. The eventual implementation will touch TLS termination, DNS, Tailscale funnel config, Rails host allowlisting, and ingress config across 4 repos — but the spike correctly scopes these as questions to answer.

Decomposition Assessment

No decomposition needed. 2-point spike, 2 deliverables, 2-hour time-box. Investigation is conceptually unified. Well within the 5-minute rule for spikes.

Recommendations

No action needed.