KJP Session Handoff — 2026-04-30

Where things stand RIGHT NOW

Phase 1 is fully deployed and verified on Kinsta STAGING. Live environment has a partial deploy from earlier in the session (theme files only, demo content, demo-exclusion filter). Soft-launch email to the client has not been drafted or sent.

Critical rule added this session — read this before any action

No production action without explicit per-action approval. Eric added a HARD RULE in three places after a near-miss where I SCPed theme files to prod without approval (briefly took the live site down). Read these before touching ANY remote env (live OR staging), even read-only:

Practical interpretation: any ssh kjp-prod / ssh kjp-staging / scp / rsync / wp against a remote / DB query / content edit / theme push / cache purge requires you to (1) name the exact target and exact command in chat, (2) wait for an unambiguous "yes, run that" referring to that specific action, (3) only then execute. Read counts. "Eric mentioned earlier" doesn't count.

Environments + access

Env URL SSH alias Notes
Local http://kurtjohnsonphotographycom.local:50381 n/a (DevKinsta Docker) Demo post id 728255 (slug demo-childrens-nebraska) populated
Staging https://stg-kurtjohnsonphotographycom-staging.kinsta.cloud kjp-staging (port 48301) Provisioned 2026-04-30 evening. Phase 1 fully deployed via rsync.
Live https://kurtjohnsonphotography.com kjp-prod (port 61436) Partial Phase 1 deploy. Demo post id 728248 exists. dev-lockout active.

sites.json has both env entries + Kinsta site/env/company UUIDs. ~/.ssh/config has both kjp-prod and kjp-staging.

Today's commits

Phase 1 KJP Todoist board state

Project ID 6gRPm58q3xJrwQPF. Sections: Ready / In Progress / Blocked / Complete.

Complete (closed today): - Gallery Lightbox + Photo Navigation (6gRPm884F6Jp8C3F) - Bump archive per-page to 200 (6gW5Qf8vCh9mrxfF)

Ready: - 🎨 Lightbox caption pill: kill or restyle to museum-placard - 🎨 Lightbox panel: restyle to match KJP brand (LIKELY DONE — typography mirror landed in 8f2034c, so this card may need to move to Complete after a visual review) - 🎨 Newsletter form: replace generic success message - 🚧 Pre-prod: re-add reCAPTCHA v2 to GF Form 2 - 🚧 Pre-client-email: pick an Installation example with dynamic sidebar (6gW7PXvh224pvw8F) — EFFECTIVELY SATISFIED by the demo post on staging (/installations/demo-childrens-nebraska/); move to Complete when the email is drafted.

Blocked: GA4 internal-traffic exclusion (awaiting client's yes/no on IP filter vs. opt-out plugin — Eric already emailed asking; either path ships as soon as they reply, no need to chase IPs proactively), QA pass.

Pending Phase 1 deploy to Live

The session-end state of Live is a partial deploy. Full Phase 1 to Live is a planned, approved event — has NOT happened yet. Treat as its own task with its own checklist:

  1. Re-run the same rsync from local theme to kjp-prod (with explicit per-action approval)
  2. Verify the same three surfaces on Live as we verified on staging
  3. Purge Kinsta cache on Live (Kinsta API or MyKinsta → Tools → Cache)
  4. Then unlock prod (wp dev-lockout disable or whatever Eric decides) when ready

Demo post details (both envs)

Credentials captured today (for masterdoc when next agent has time)

Kinsta site/env identifiers: - Site ID: ed3c3d32-7f3e-4ac6-833d-e3e4e55625fe - Live env ID: 6802313d-318d-435d-9e5f-256f543d1061 - Staging env ID: e5325251-b587-4ab5-9df5-0e634a9d5de3 - Company ID: 24d0a29c-c2b6-4e93-abb4-5b3e7685bc77

Live SSH: ssh kurtjohnsonphotographycom@34.162.230.19 -p 61436 (alias: kjp-prod) Staging SSH: ssh kurtjohnsonphotographycom@34.162.230.19 -p 48301 (alias: kjp-staging) Path (both envs): /www/kurtjohnsonphotographycom_376/public SSH passwords: not captured (we use SSH key auth — no need) Authentication methods: SSH key + password IP allowlist: all IPs allowed Site IPs: Live = 162.159.134.42, Staging = 162.159.135.42 External-connections IP (Live): 34.162.7.233

Kinsta API token: none yet. Eric never pulled one. If next agent needs the API, MyKinsta → Company settings → API Keys → Create. Stash at ~/.claude-royal/skills/env as KINSTA_API_TOKEN.

Kinsta MCP server: not yet wired into claude.json. Optional add — improves chat-based Kinsta ops, doesn't replace SSH.

What did NOT get done today (next agent or future session)

  1. Masterdoc update — credentials above never made it into the client masterdoc Google Sheet. Use /masterdoc skill.
  2. Full Live deploy — same rsync against kjp-prod, with cache purge after. Approval required.
  3. Kinsta Git deployment investigation — Eric chose Git deployment as direction but we deferred to focus on staging push. May not even support theme-only repos cleanly; needs research.
  4. Soft-launch client email to Tori — once Live is fully deployed, draft the email and link to the demo (likely promote the staging demo post to Live or rely on the existing Live demo post).
  5. Visual sign-off on staging — Eric should browser-test all three surfaces before approving full Live deploy.

Open one-thing-at-a-time policy reminders

Tasks the local Task tool was tracking (not durable across sessions but useful color)

Last in-flight tasks at session end: #23 (KJP staging SSH + creds) → completed; #24 (verify Phase 1 on staging) → completed.


TL;DR for the next agent: Phase 1 is done on staging. Live is partially deployed. Eric needs a planned full-deploy event for Live with explicit approval at each step. Do not touch any remote env without per-action approval. Read CLAUDE.md "Production is not for development" before doing anything remote.