# JW Evidence CV — v2.7 Candidate 15

**Date:** October 19, 2026
**Deployment ID:** JW-CV-CF-v2.7-CANDIDATE-15
**Rollback baseline:** v2.7 Candidate 14

## Purpose
Configures Cloudflare bindings and variables for the planned research integrations and adds a credential status check that never exposes values.

## Changes
- wrangler.jsonc now carries the research-integration settings, because Cloudflare Pages treats this file as the source of truth for plain-text variables and bindings: ORCID_ID, ORCID_CLIENT_ID, NCBI_TOOL, RESEARCH_REFRESH_SECONDS, NCBI_ENABLED=false, ORCID_ENABLED=false and RESEARCH_CACHE_LABEL.
- Two Workers KV namespaces created and bound as RESEARCH_CACHE: jw-cv-research-prod for Production and jw-cv-research-preview for Preview deployments, so preview writes cannot reach production data.
- New Pages Function GET /api/research/status reports which settings are present and whether NCBI and ORCID accept the stored credentials, as states only (valid, invalid, not_configured, client_id_format_invalid, rate_limited, timeout, error). It never returns, logs or stores a credential or token; live checks run at most once an hour unless the settings change.
- Secrets stay in the Cloudflare dashboard only: NCBI_API_KEY, NCBI_CONTACT_EMAIL and ORCID_CLIENT_SECRET. PubMed and ORCID imports remain off; no page shows imported records yet.
- ORCID page status text updated to describe the server-side settings check.

## Required checks before and after deployment
- Before merging: Production secrets NCBI_API_KEY, NCBI_CONTACT_EMAIL and ORCID_CLIENT_SECRET exist in Cloudflare (Settings, Variables and Secrets).
- The preview deployment returns JSON from /api/research/status with RESEARCH_CACHE "bound" and environment "preview"; the homepage is unchanged.
- After merging: /api/research/status on cv.jermainewhiteside.com shows environment "production" and the credential states.
- The footer shows "Deployment v2.7 Candidate 15 · October 19, 2026".
