# Phase 1a Sync Checklist

Tracks file-by-file state for the topic reframe release. All 4 active surfaces + 2 mirrors must reach the same state before Task 8 deploy.

## Surfaces

| # | Surface | Path |
|---|---|---|
| 1 | Core reader (direct DB) | `/var/www/html/reader/topic-explorer-api.php` |
| 2 | Standalone build (API) | `/var/www/html/standalone-build/biblebridge/topic-explorer-api.php` |
| 3 | WP plugin topic detail (API) | `/var/www/html/wordpress-plugin/biblebridge/templates/routes/topic-detail.php` |
| 4 | WP plugin topics browse (API) | `/var/www/html/wordpress-plugin/biblebridge/templates/routes/topics.php` |
| M1 | GitHub mirror | `/var/www/html/github/biblebridge/topic-explorer-api.php` |
| M2 | WP install mirror | `/var/www/html/wp/wp-content/plugins/biblebridge/templates/routes/{topic-detail,topics}.php` |

## Task 2 — Strip descriptions + directional flow rendering

Stripped from user-facing rendering on all surfaces (DB data preserved):
- Topic description prose (`te-description`)
- "Not just a list of verses" subtitle (`te-why-block`)
- Topic-type badge on detail header (`te-type-badge`)
- Follow-the-Flow section (`te-section--flow`, `te-flow-group`, `te-spine-chain`, `te-spine-arrow`)
- Reading Path section (`te-section--reading-path`, `te-rp-*`)
- Relationships table (`te-rel-table`, `te-rel-row`, `te-rel-label`, `te-rel-dir`)
- Browse-page description snippets (`te-cluster-desc`)
- Browse-page directional badges (`te-cluster-direction`, `primary_edge`)
- "Start Exploring" curated chains (`exploreChains`, `te-browse-group--explore`)
- Old browse hero copy ("Follow how ideas in Scripture connect — not just what they mean, but where they lead")

Replaced browse hero with neutral copy: *"A curated index of scripture by topic — browse, compare translations, and follow cross-references."*

| Surface | State |
|---|---|
| 1 — Core reader | DONE 2026-04-09 (also dropped ~400 lines of dead BFS/relation/reading-path PHP) |
| 2 — Standalone build | DONE 2026-04-09 |
| 3 — WP plugin topic-detail | DONE 2026-04-09 |
| 4 — WP plugin topics browse | DONE 2026-04-09 |
| M1 — GitHub mirror | DONE 2026-04-09 (cp from #2) |
| M2 — WP install mirror | DONE 2026-04-09 (cp from #3, #4) |

PHP `-l` syntax check: PASS on all 4.
Residue grep for stripped class names + dead variables: ZERO matches in BibleBridge files.

JSON-LD on core reader currently uses a generic anchor-scriptures meta description (not the old `$topic['description']`). Task 6 will replace with `generateTopicMetaDescription()`.

## Task 3 — Shared-verse adjacency text list

DONE 2026-04-09.

- DB index added: `ALTER TABLE bibles.topic_anchors ADD INDEX idx_verse (verse_index)` — query uses `idx_verse` ref scan, plan verified in EXPLAIN.
- Helper added: `/var/www/html/includes/topic-adjacency.php` — `bb_topic_adjacency(PDO $db, int $topicId, int $limit = 8)`. Function-existence guarded; no class wrapper.
- API endpoint extended: `/var/www/html/api/endpoints/topics.php` MODE 1 detail response now includes `adjacency: [{slug,name,shared}, ...]`. Cache key bumped to `topics:v4:detail:` to invalidate stale entries.
- Section "Topics that share scripture" rendered on:
  - Surface 1 (core reader, direct DB call to helper)
  - Surface 2 (standalone build, reads `$apiData['adjacency']`)
  - Surface 3 (WP plugin topic-detail, reads `$apiData['adjacency']`)
- New CSS: `.te-adjacency`, `.te-adjacency-intro`, `.te-adjacency-list`, `.te-adjacency-item`, `.te-adjacency-link`, `.te-adjacency-count` — appended to:
  - `reader/assets/reader.css` and `reader.min.css`
  - `standalone-build/biblebridge/assets/reader.css` and `reader.min.css`
  - `wordpress-plugin/biblebridge/assets/css/reader.css`
- Cache busters bumped to `?v=20260409a` on surfaces 1, 2.
- Mirrors synced (M1, M2).
- Smoke test: `/topics/grace` on holybible.dev renders the section with 8 entries (Salvation 5 shared, Atonement/Justification/Redemption 2 each, Calling/Discipleship/Faith/Forgiveness 1 each). Singular ("verse") and plural ("verses") both render correctly.

## Task 4 — Cross-reference walker panel

DONE 2026-04-09.

- New JS: `/var/www/html/reader/assets/xref-walker.js` — vanilla IIFE, ~270 lines, no globals leaked. Reads `window.BB_XREF_WALKER_CONFIG = {endpoint, version, baseUrl}`. Lazy-builds `<aside id="xrefWalker">` on first open. Maintains a history stack so clicking any cross-reference inside the panel walks forward; back button steps backward; close button + Escape + backdrop click dismiss. Per-reference response cache. Handles BOTH normalized (`{cross_references: [...]}`) and raw API (`{status, data: [...]}`) shapes so the same JS works on core reader, standalone, and WP plugin.
- Trigger: each anchor verse on topic-detail surfaces now renders a `<button class="te-anchor-xref" data-bb-xref-ref="{ref}">Cross-references</button>`. Walker's document-level click delegate fires.
- Wired on:
  - Surface 1 (core reader): config endpoint `/reader/xref.php?` (existing endpoint, normalized response)
  - Surface 2 (standalone build): config endpoint `<bbBaseUrl>/xref.php?` (existing endpoint, normalized response)
  - Surface 3 (WP plugin topic-detail): config endpoint `admin-ajax.php?action=bb_api&endpoint=%2Fcross-references&` via existing `bb_api_proxy` (raw API response)
- WP plugin AJAX proxy: `bb_api_proxy` already handled `/cross-references`. Added `limit` to its allowed query-param whitelist so the walker can pass `&limit=8`.
- WP plugin enqueue: new `bb-xref-walker` script registered alongside `bb-reader`, with `wp_localize_script` setting `BB_XREF_WALKER_CONFIG`.
- New CSS: `.te-anchor-xref` (trigger button), `.xref-walker-*` (panel chrome, list, items, back button, crumb, backdrop). Reuses existing `.xref-panel` base styles where possible. Appended to:
  - `reader/assets/reader.css` and `reader.min.css`
  - `standalone-build/biblebridge/assets/reader.css` and `reader.min.css`
  - `wordpress-plugin/biblebridge/assets/css/reader.css`
- WP plugin `BB_ASSET_VERSION` bumped from `20260330m` → `20260409a`.
- Mirrors synced: github/biblebridge/{topic-explorer-api.php, assets/reader.css, assets/reader.min.css, assets/xref-walker.js}; wp/wp-content/plugins/biblebridge/{biblebridge.php, templates/routes/topic-detail.php, assets/css/reader.css, assets/js/xref-walker.js}.
- Smoke test: `/topics/grace` on holybible.dev renders 18 anchor verses each with the trigger button. `/reader/xref.php?reference=Ephesians+2:8&v=kjv&limit=8` returns 8 normalized cross-references with text. Walker JS loaded.
- Manual interactive test deferred to Task 9 (no headless browser available here).

## Task 5 — Copy all verses to clipboard

DONE 2026-04-09.

- New JS: `/var/www/html/reader/assets/topic-tools.js` — vanilla IIFE, ~140 lines. Document-level click delegate on `[data-bb-copy-anchors]`. Reads anchor verses from the enclosing `<section>` via `.te-anchor-item` / `.te-anchor-ref` / `.te-anchor-text`. Builds plain text with topic header, blank-line-separated verse blocks, and a `Source: <url>` attribution footer. Writes via `navigator.clipboard.writeText` with `execCommand('copy')` fallback for non-secure contexts. Inline button feedback ("Copied ✓" / "Copy failed") with auto-restore after 1.8s.
- Trigger: anchor-scriptures section title now renders a `<button class="te-copy-all" data-bb-copy-anchors data-topic-name="..." data-source-url="...">Copy all verses</button>` floated to the right of the section title.
- Source URL:
  - Surface 1 (core reader): `$canonicalUrl`
  - Surface 2 (standalone): `$canonicalUrl`
  - Surface 3 (WP plugin): `get_permalink()`
- Wired on:
  - Surface 1: script tag `topic-tools.js?v=20260409c`
  - Surface 2: script tag `topic-tools.js?v=20260409c`
  - Surface 3: enqueued as `bb-topic-tools` via `wp_enqueue_script`
- New CSS: `.te-copy-all`, `.te-copy-all--ok`, `.te-copy-all--err` — outline button styled to match section-title typography. Appended to all 4 css files.
- Cache busters bumped to `?v=20260409c` (and `BB_ASSET_VERSION` for WP plugin).
- Mirrors synced: github/biblebridge/{topic-explorer-api.php, assets/topic-tools.js, assets/reader.css, assets/reader.min.css}; wp/wp-content/plugins/biblebridge/{biblebridge.php, templates/routes/topic-detail.php, assets/js/topic-tools.js, assets/css/reader.css}.
- Smoke test: `/topics/grace` on holybible.dev renders `data-bb-copy-anchors`, `data-topic-name="Grace"`, `data-source-url="https://holybible.dev/topics/grace"`, and loads `topic-tools.js`. Interactive clipboard test deferred to Task 9.

## Task 6 — OG meta + JSON-LD + OG image rewrite

DONE 2026-04-09.

- New helper: `/var/www/html/includes/topic-meta.php` with two functions:
  - `bb_generate_topic_meta_description($name, $topRefs, $totalAnchors, $siteName)` → `"Anchor scriptures for Grace — Ephesians 2:8, 2 Corinthians 12:9, Romans 3:23 and 15 more verses on BibleBridge."`
  - `bb_generate_topic_og_subline($topRefs, $totalAnchors)` → `"Gen 1:1 · Joh 4:24 · Psa 46:10 · +16 more"` (compact form for the OG image canvas)
- Both are factual, no doctrinal claim, no editorial prose.
- Core reader (`reader/topic-explorer-api.php`): builds `$metaDescription` from the top 3 anchor refs (already sorted by score DESC) and uses it in `<meta name="description">`, all OG/Twitter description tags, and the JSON-LD `WebPage.description` field. Removed all hardcoded "structured, expressed, and connected" placeholder text.
- API endpoint (`api/endpoints/topics.php`): MODE 1 detail response now includes `topic.meta_description`. Cache key bumped `topics:v5:detail:` → `topics:v6:detail:`.
- Standalone build (`standalone-build/biblebridge/topic-explorer-api.php`): reads `$apiData['topic']['meta_description']` from API and uses it in `<meta name="description">`. Falls back to a generic line if missing.
- WP plugin (`wordpress-plugin/biblebridge/templates/reader.php`): pre-fetches the topic API call when `route === 'topic-detail'`, reads `meta_description`, emits `<meta name="description">` and OG tags in `<head>` for topic-detail routes (previously only did this for `read` routes). Stashes the prefetch in `$GLOBALS['bb_prefetched_topic']` so the route template `topic-detail.php` reuses it instead of making a duplicate API call.
- OG image generator (`/og/topic.php`): no longer reads `topics.description`. Now loads the topic's anchor verses from `topic_anchors` (sorted by score DESC), passes the top 3 references + total count to `bb_generate_topic_og_subline()`, and renders the resulting compact line below the topic name. On-disk PNG cache key bumped `topic-{slug}.png` → `topic-v2-{slug}.png`. Old cached PNGs are left in place (harmless; new templates request the new key via `?v=20260409`).
- All `og:image` and `twitter:image` URLs in surfaces 1 and 2 now include `&v=20260409` so social-cache scrapers fetch the new image.
- Mirrors synced: github/biblebridge/topic-explorer-api.php; wp/wp-content/plugins/biblebridge/{templates/reader.php, templates/routes/topic-detail.php}.
- Smoke test (core reader):
  - `/topics/grace`: `<meta name="description" content="Anchor scriptures for Grace — Ephesians 2:8, 2 Corinthians 12:9, Romans 3:23 and 15 more verses on BibleBridge.">`
  - `/topics/god`:   `<meta name="description" content="Anchor scriptures for God — Genesis 1:1, John 4:24, Psalm 46:10 and 16 more verses on BibleBridge.">`
- Smoke test (API): `topic.meta_description` populated on `/api/topics/grace` and `/api/topics/god`.
- Smoke test (OG image): `/og/topic.php?slug=god&v=20260409` returns 1200×630 PNG, ~19KB. Visual: cross + "TOPIC" label + "God" headline + "Gen 1:1 · Joh 4:24 · Psa 46:10 · +16 more" subline + holybible.dev footer. Confirmed correct.

## Task 7.5 — Anchor previews on browse cards (added 2026-04-09)

DONE 2026-04-09. Added during Phase 1a after the user flagged the topics browse page as visually flat. Decision rationale and discarded alternatives are captured in `feedback_no_browse_descriptions.md`.

- New field on browse responses: `top_anchors: [string, string]` per topic — top 2 anchor refs sorted by score DESC. Pure DOM/data, zero editorial risk.
- Core reader (`reader/topic-explorer-api.php` BROWSE MODE): added a single SQL query that fetches all anchor rows joined with verse text, ordered by `topic_id, score DESC`, then PHP buckets the top 2 per topic. Attached to `$allTopics[*]['top_anchors']`. Browse template renders `<div class="te-cluster-anchors">Ref · Ref</div>` between title and footer.
- API endpoint (`api/endpoints/topics.php` MODE 3): same per-topic top-2 query, attached to each topic in the response. Browse cache key bumped `topics:v3:browse:` → `topics:v4:browse:` to invalidate stale entries.
- Standalone build (`standalone-build/biblebridge/topic-explorer-api.php`): browse template reads `$t['top_anchors']` from API.
- WP plugin (`wordpress-plugin/biblebridge/templates/routes/topics.php`): same.
- New CSS: `.te-cluster-anchors` (small Inter, muted color, 2-line clamp). Appended to all 4 css files.
- Cache busters bumped `?v=20260409c` → `?v=20260409d` and WP plugin `BB_ASSET_VERSION`.
- Mirrors synced: github/biblebridge/{topic-explorer-api.php, assets/reader.{css,min.css}}; wp/wp-content/plugins/biblebridge/{biblebridge.php, templates/routes/topics.php, assets/css/reader.css}.
- Smoke test on `/topics`: every card now shows two anchor refs e.g. "Atonement / Leviticus 17:11 · Isaiah 53:5", "Creation / Genesis 1:1 · Psalm 19:1", "Grace / John 1:14 · Romans 3:23". Zero editorial prose. Curation quality immediately visible.

## Task 7.5b — Flat alphabetical browse (added 2026-04-09)

DONE 2026-04-09. Removed type-grouping (Doctrines/Virtues/Practices/Experiences) from all 4 surfaces. Single flat alphabetical grid. Lived for ~10 minutes before being superseded by Task 7.5c.

## Task 7.5c — Tier A / Tier B intentional shelves (added 2026-04-09)

DONE 2026-04-09. The flat list still felt unintentional, so the next iteration was the Tier A/B split per the reframe memory.

- New file: `/var/www/html/includes/topic-tiers.php` — single source of truth for the curation. Two slug arrays (`tier_a`, `tier_b`) plus the section labels. Editable in one place; no DB schema change. Topics not in either array are hidden from the browse index but still reachable by direct URL.
- Tier A — 21 topics — Core Study Themes (doctrinal pillars)
- Tier B — 52 topics — Pastoral Care & Life Themes
- Hidden — 16 topics — duplicates (love-agape/marriage/phileo, prayer-intercession, new-birth, eternity) plus narrow practices (confession, sabbath, fasting), niche/vague (pride, provision, protection, desire, relationships, enemies, law). Listed inline at the bottom of `topic-tiers.php`.
- Each tier renders alphabetically by display name (no hidden hierarchy in slug order).
- Core reader (`reader/topic-explorer-api.php`): browse mode loads `topic-tiers.php`, splits `$allTopics` into `$tierATopics`/`$tierBTopics`, renders two `<section class="te-tier">` shelves with `<h2 class="te-tier-label">` headings.
- API endpoint (`api/endpoints/topics.php` MODE 3): loads `topic-tiers.php`, attaches `tier: 'a' | 'b' | null` to every topic in the response, includes `tier_a_label` and `tier_b_label` as top-level fields. Cache key bumped `topics:v4:browse:` → `topics:v5:browse:`.
- Standalone build + WP plugin browse templates: filter `$allTopics` by `tier` and render two shelves the same way.
- New CSS: `.te-tier`, `.te-tier-label` — distinct from the old `.te-browse-type` filing-cabinet labels (deliberately different visual treatment so it reads as editorial section, not data-model metadata). Border-bottom under the label, larger letter-spacing, secondary text color. Appended to all 4 css files.
- Cache busters bumped `?v=20260409e` → `?v=20260409f`.
- Mirrors synced.
- Smoke test on `/topics`: 2 tier shelves, 73 visible cards (21 Tier A + 52 Tier B). Hidden topics confirmed reachable via direct URL (`/topics/desire`, `/topics/law`, etc.).
- The curation is a draft. Editing is a 1-line change in `topic-tiers.php`. Re-curation requires no deploy beyond template/cache-buster sync.

### Inclusivity audit on Tier A doctrinally-sensitive topics (2026-04-09)

Reviewed Baptism and Justification before locking front-and-center visibility:

- **Baptism**: passes. Top 0.95 anchors: Matt 28:19 (command), Acts 2:38 (church practice), Rom 6:3 + Gal 3:27 (union with Christ), 1 Pet 3:21 (sacramental — *important* inclusion that most Reformed proof-text dossiers would deemphasize). Card preview "Matthew 28:19 · Acts 2:38" is broadly accepted across traditions.
- **Justification**: needed a small rescore. The full anchor list was already inclusive (included James 2:21–24 alongside Romans 3:28, plus Gen 15:6 and Hab 2:4), but every verse was scored 0.8 — no top tier — so the card preview was arbitrary and surfaced two Pauline-only verses ("Galatians 3:11 · Ephesians 1:7"). Promoted three anchors to score 0.95 via SQL: Genesis 15:6 (OT foundation, both sides cite), Romans 3:28 (Pauline anchor), James 2:24 (the explicit "not by faith only" pushback, the inclusivity signal). Card preview now reads "Genesis 15:6 · Romans 3:28" — fair-minded without being polemical.
- **Stable secondary sort added** to all 4 anchor SQL queries (core reader detail, core reader browse top-anchors, API endpoint detail, API endpoint browse top-anchors): `ORDER BY ta.score DESC, v.book ASC, v.chapter ASC, v.verse ASC`. Eliminates indeterminate ordering on score ties.
- API cache keys bumped: detail `topics:v6:detail:` → `topics:v8:detail:`, browse `topics:v5:browse:` → `topics:v7:browse:`.
- Smoke test confirms both topics render the intended previews live.
## Task 7.5d — Browse copy layer (added 2026-04-09)

DONE 2026-04-09. Added after the user noted the page felt detached from the homepage's "Popular" section's intent-driven energy. Pure copy/text additions, no per-card descriptions, no structural change.

- **Hero subtitle replaced:** "Use this shelf for sermon prep, doctrine classes, or finding verses for life themes. Each topic gathers anchor scriptures pastors and study tools have connected across church history."
- **Tier A label changed:** "Core Study Themes" → "Start with doctrine" + new caption "Foundations every Christian tradition centers — for teaching the faith, sermon series, and grounding discipleship."
- **Tier B label changed:** "Pastoral Care & Life Themes" → "For pastoral care & life" + new caption "Topics pastors use for counseling, funerals, sermons on suffering, and character formation in discipleship."
- **Footer search affordance added** below the last tier on all 3 active surfaces: "Don't see what you need? Search scripture directly →" linking to the search page.
- All copy describes USE / WHEN, not interpretation / WHAT TOPICS MEAN — preserves the scripture-first philosophy.
- New labels + intros centralized in `includes/topic-tiers.php` (`tier_a_label`, `tier_a_intro`, `tier_b_label`, `tier_b_intro`). Editable in one place.
- API browse response extended with `tier_a_intro` and `tier_b_intro` fields. Cache key bumped `topics:v8:browse:` → `topics:v9:browse:`.
- New CSS: `.te-tier-intro` (Lora 0.95rem, muted, 60ch max) and `.te-browse-footer-search` (Inter 0.85rem, top border, centered with accent-colored CTA). Tightened `.te-tier-label` margin-bottom from `1rem` to `0.5rem` so the intro caption sits close to its label. Appended/patched in all 4 css files.
- Cache busters bumped to `?v=20260409g`.
- Mirrors synced.
- Smoke test on holybible.dev/topics confirms hero, both tier labels + captions, and footer search render correctly.

## Task 7.5e — Browse layout rhythm + card click energy (added 2026-04-09)

DONE 2026-04-09. Pure CSS polish, no template or copy changes. Triggered by user feedback that the new copy was good but the layout still felt slightly academic and the cards weren't browsable enough.

- **`.te-tier-intro` margin-bottom**: `1.25rem` → `0.6rem` (cuts ~10px between section caption and first card row, tightens browse rhythm)
- **`.te-cluster-anchors` color**: `var(--text-muted)` → `var(--text-secondary)` (#888→#555 light, #62594f→#9a9285 dark — meaningfully more legible)
- **`.te-cluster-arrow` default opacity**: `0.6` → `0.85` (closes the perceptual gap with `.te-cluster-count` at 0.75; arrow now reads as clickable, not decorative)
- **`.te-cluster-card:hover`**: `translateY(-2px)` → `-3px`, shadow blur `16px` → `22px`, alpha `0.08` → `0.10` (deeper, more directional lift)
- Cache busters bumped `?v=20260409g` → `?v=20260409h`. Mirrors synced.
- Notable non-changes: arrow is already in the same flex row as count via `.te-cluster-footer { align-items: center }` — no restructure needed; the perceived misalignment was opacity-driven, fixed by the opacity bump.

## Task 7.5f — Tier A teaching order (added 2026-04-09)

DONE 2026-04-09. The "Start with doctrine" label was a promise of intent, but the cards were rendering alphabetically — undermining the promise. Reordered Tier A to a redemptive-historical teaching sequence; Tier B stays alphabetical.

- **Tier A render order** (now editorially curated, NOT alpha):
  1. God / 2. The Trinity / 3. Scripture / 4. Creation
  5. Sin
  6. Jesus Christ / 7. The Cross / 8. Atonement / 9. Resurrection
  10. Grace / 11. Faith / 12. Salvation / 13. Justification / 14. Redemption / 15. Sanctification
  16. Holy Spirit / 17. Prayer / 18. Church / 19. Baptism
  20. Kingdom of God / 21. Eternal Life
- **Tier B** stays alphabetical — there's no canonical learning sequence for "Anxiety vs Depression vs Doubt", and alpha is the calm default for browse-and-find use.
- Source of truth is `includes/topic-tiers.php` slug array order. Re-curating is a 30-second array reorder, no template changes needed.
- **Core reader**: dropped the alpha `usort` for `$tierATopics`, kept it for `$tierBTopics`. Order now flows from `topic-tiers.php`.
- **API endpoint browse mode**: now sorts the `topics` response server-side: tier A in teaching order, tier B alpha, untiered alpha (last). Cache key bumped `topics:v9:browse:` → `topics:v10:browse:`.
- **Standalone build + WP plugin templates**: dropped both alpha `usort` calls. Templates now just `array_filter` by tier — order is preserved from API receive order.
- Mirrors synced. Smoke test confirms first card row reads "God · The Trinity · Scripture · Creation" — intentional teaching opening, not database default.

### Full inclusivity sweep on remaining 8 Tier A topics (2026-04-09)

| Topic | Card preview | Verdict |
|---|---|---|
| Atonement | Leviticus 17:11 · Isaiah 53:5 | PASS — 1 John 2:2 ("not for ours only, but for the whole world") at top tier; Christus Victor + sacrificial + Pauline at 0.8 |
| Church | Matthew 16:18 · Acts 2:42 | PASS — Petrine + Apostolic; 0.8 spans Reformation + bride + gathering |
| Holy Spirit | Genesis 1:2 · John 14:26 | PASS — universal, top-5 spans Pentecostal + indwelling |
| Sin | Genesis 3:6 · Isaiah 59:2 | PASS — universal definition + Fall + Rom 3:23 |
| Sanctification | John 17:17 · Romans 6:22 | PASS — top includes positional Heb 10:14 (Reformed); 0.8 includes 1 Thess 5:23 + Heb 12:14 (Wesleyan) |
| The Trinity | Genesis 1:26 · Isaiah 48:16 | PASS — universal Trinitarian texts |
| Salvation | Isaiah 53:5 · John 3:16 | INTENTIONAL Protestant evangelical lean per locked reframe decision; card itself is universal, full page reflects sola fide position. No action. |
| The Cross | (was arbitrary; rescored 2026-04-09) | RESCORED — 5 anchors promoted to 0.95: Isaiah 53:5, John 19:30, 1 Corinthians 15:3, Ephesians 2:16, Colossians 1:20. Card preview now "Isaiah 53:5 · John 19:30". |

The-cross rescore SQL applied. API cache keys bumped: detail `topics:v8:detail:` → `topics:v9:detail:`, browse `topics:v7:browse:` → `topics:v8:browse:`. All 4 active surfaces now show inclusive curation on every Tier A doctrinally-sensitive topic except Salvation, where the Protestant evangelical lean is intentional and pre-decided.

## Task 7 — Pricing grandfather-clause copy

DROPPED 2026-04-09. There are no paid subscribers to grandfather, distribution (not pricing) is the actual bottleneck, and FOMO copy with no audience is Pet Rock marketing. Memorialized in `feedback_grandfather_deferred.md`. Revive only when (a) there are real subscribers and (b) a price increase is imminent.

## Task 8 — Sync + deploy

DONE 2026-04-09 (effectively — WP plugin SVN push deferred until WordPress.org approval).

### Local prep (Phase 1A — autonomous)

- Standalone version bumped 1.0.6 → 1.0.7 in both `/var/www/html/standalone-build/biblebridge/config.php` and `/var/www/html/github/biblebridge/config.php`.
- WP plugin version bumped 1.0.3 → 1.0.4 in `biblebridge.php` Version: header + `BB_PLUGIN_VERSION` constant + `readme.txt` Stable tag. Changelog entry added to readme.txt.
- WP install mirror (`/var/www/html/wp/wp-content/plugins/biblebridge/`) synced.
- Standalone zip rebuilt at `/var/www/html/standalone-build/biblebridge-reader.zip` — 281 KB. Verified `.git`, `.env`, `config.local.php`, `.installed` all excluded. Verified `xref-walker.js`, `topic-tools.js`, `topic-explorer-api.php` all included.
- Trinity Christology gap closed: added John 1:14, John 10:30, Colossians 2:9, Hebrews 1:3 at score 0.95 to fix the page reading as Spirit-heavy with no explicit Jesus identity verses. API detail cache key bumped `topics:v9:detail:` → `topics:v10:detail:`.
- Live smoke test on holybible.dev confirmed: 72 visible cards, 2 tier shelves, intro captions, footer search link, walker JS loaded, copy-all button rendered, adjacency rendering correctly with the >=2 filter, meta_description in API response, OG image generated.

### Production cutover (Phase 1B — gated)

- **Step 1: `/api/standalone-version` cutover** — `$latest` bumped 1.0.6 → 1.0.7, changelog string replaced. Live at the API endpoint immediately. **Installed standalone readers checking for updates from this moment forward see 1.0.7.**
- **Step 2: GitHub mirror commit + push + tag** — commit `11872ae` on `main` (6 biblebridge files: 4 modified + 2 new, orphan `orderagad-trust-audit.md` explicitly NOT staged). Tag `v1.0.7` pushed to `origin`. Repo: `ZeroCoolZiemer/biblebridge`.
- **Step 3: GitHub Release** — `gh release create v1.0.7` with public-facing notes (anchor previews, walker, copy-all, two intentional shelves, Trinity inclusivity note, etc.) and `biblebridge-reader.zip` (281 KB) attached. Live at https://github.com/ZeroCoolZiemer/biblebridge/releases/tag/v1.0.7.
- **Step 4: WP plugin SVN push — DEFERRED.** WP.org plugin review (submitted v1.0.1 on 2026-04-02) is still pending as of 2026-04-09. No SVN repo exists yet. `./deploy.sh 1.0.4` cannot run until approval lands and WP.org provides SVN credentials. Local v1.0.4 sits ready; when approval comes, Derek can push it directly.

## Task 8 — Sync + deploy

Pending. Includes:
- Bump `reader.min.css` cache buster (orphaned `.te-flow`, `.te-rel-*`, etc. CSS classes still present but harmless — cleanup deferred)
- Standalone zip rebuild + 6-step manual release per `project_standalone_release.md`
- WP plugin version bump + SVN push per `project_wp_deploy.md`
- Live smoke test on holybible.dev/topics and a few topic detail pages

## Task 9 — Testing + debugging buffer

Pending.
