Validation: Communications tab (lead/client): contact methods
Verdict: FAIL
Ticket
#52 Communications tab (lead/client): contact methods — Role-branched contact methods tab with DM, Email, and Appointment cards. Lead sees locked DM; client sees active DM link. Admin sees incoming management placeholder.
Merged PR: #82 (commit
4656364)Board item: #1822 on board-iss
Environment
Production cluster, namespace
intelligentstaffingsystems, URL https://intelligentstaffingsystems.aiArgoCD application:
intelligentstaffingsystems — Synced / DegradedTiers Executed
Tier 1 (local/CI review) + Tier 3 (production). Per
arch:rails label mapping.Checks
| # | Criterion | How Verified | Result | Evidence |
|---|---|---|---|---|
| 1 | CI pipeline green for merge commit | Woodpecker pipeline #78 (push event for PR #82 merge) | FAIL | Pipeline #78: clone success, all other steps skipped. Pipeline #90 (latest main push): test step fails with <code>cannot load such file -- minitest/mock (LoadError)</code>, build-and-push skipped. |
| 2 | New image tag propagated to pod | <code>kubectl get pods -o jsonpath</code> for image tags | FAIL | Running pod image: <code>93b9a79b8a88cbb07a7f8fda1b6d85803580cbbb</code> = commit <code>93b9a79</code> ("fix: align pipeline push repo with Argo CD Image Updater annotation"), which predates the Communications tab merge at commit <code>4656364</code>. No new image was built because CI test step fails. |
| 3 | Pod running and ready, restarts = 0 | <code>kubectl get pods -n intelligentstaffingsystems</code> | PARTIAL | Old pod <code>6d6896dd95-ls9k4</code>: 1/1 Running, 0 restarts, 11h. New pod <code>8474c67bc8-nxphp</code>: 0/1 Init:CrashLoopBackOff — init container <code>migrate</code> fails with <code>PLACEHOLDER_POSTGRES_HOST</code>. ArgoCD reports Degraded. |
| 4 | /communications route returns 200 | <code>curl -s -o /dev/null -w "%{http_code}" https://intelligentstaffingsystems.ai/communications</code> | FAIL | Returns HTTP 404. The running pod is on the pre-Communications-tab image; the route does not exist in that version. |
| 5 | Production root URL healthy | <code>curl https://intelligentstaffingsystems.ai</code> | PASS | Returns HTTP 200. The old pod is still serving the landing page. |
| 6 | Lead sees 3 contact cards (DM locked, Email, Appointment) | Cannot verify — code not deployed | FAIL | N/A — /communications returns 404 |
| 7 | Client sees 3 contact cards with active DM link | Cannot verify — code not deployed | FAIL | N/A — /communications returns 404 |
| 8 | Admin sees incoming management view | Cannot verify — code not deployed | FAIL | N/A — /communications returns 404 |
Regression Check
Production root URL (
https://intelligentstaffingsystems.ai) still returns 200. The old pod continues to serve existing functionality. No regression from the merge itself — the new code simply has not deployed.However, a separate issue exists: a new replica set pod is crash-looping due to
PLACEHOLDER_POSTGRES_HOST in the deployment config (init container migrate cannot connect to database). This is a deployment configuration problem independent of the Communications tab code.Discovered Issues
- CI pipeline broken — minitest/mock LoadError. Pipeline #90 (latest push to main) fails at the test step because
minitest/mockcannot be loaded. This blocks all image builds. Theminitest-mockgem may need to be added to the Gemfile or the CI base image updated. This is the primary blocker preventing deployment of any merged code. - CrashLoopBackOff pod with PLACEHOLDER_POSTGRES_HOST. Pod
intelligentstaffingsystems-8474c67bc8-nxphphas a deployment config referencingPLACEHOLDER_POSTGRES_HOSTinstead of the real database host. This appears to be a kustomize overlay or secret configuration issue in pal-e-deployments. - Dev environment unreachable.
dev.intelligentstaffingsystems.aireturns connection refused (HTTP 000). ArgoCD appintelligentstaffingsystems-devnot found. Dev overlay may not be deployed yet.
Code Review (supplementary)
Although production validation fails, the merged code appears correctly implemented based on local review:
CommunicationsControllerhas role branching (admin vs lead/client) with correct helpers_contact_cards.html.erbrenders 3 cards: DM (locked/active based on role), Email (clipboard Stimulus controller), Appointment (links to booking_path)communications.cssprovides dedicated styling (144 lines)- Route defined at
GET /communicationsinconfig/routes.rb - 16 controller tests cover authentication, role branching, card rendering, and Stimulus attributes
clipboard_controller.jsStimulus controller for email copy functionality
Blockers to Re-validation
- Fix the
minitest/mockLoadError in CI (add gem to Gemfile or update base image) - Trigger a successful pipeline build to push a new image to Harbor
- Verify ArgoCD Image Updater picks up the new tag
- Fix the
PLACEHOLDER_POSTGRES_HOSTin the deployment config (separate from this ticket) - Re-run this validation once the new image is live