Skip to content

A staged plan for merging, testing, and deploying the open PRs - #607

Open
kcarnold wants to merge 1 commit into
mainfrom
claude/pr-merge-deployment-plan-ym3ygv
Open

A staged plan for merging, testing, and deploying the open PRs#607
kcarnold wants to merge 1 commit into
mainfrom
claude/pr-merge-deployment-plan-ym3ygv

Conversation

@kcarnold

@kcarnold kcarnold commented Aug 4, 2026

Copy link
Copy Markdown
Contributor

Adds docs/pr-merge-and-deploy-plan.md. Docs only — no code changes.

The finding that reframes the question

Nothing conflicts textually. Every open branch merges clean into main @ c16d6ba, and the full pairwise matrix between them is clean too. The only shared files are frontend/CLAUDE.md (four PRs, different sections), backend/CLAUDE.md/docker-compose.yml (#574, #594), and backend/src/app.ts + AccountPage.tsx (#566, #594) — all disjoint hunks. The collisions that matter are semantic, and there are four.

Four things to fix, not just merge

  1. Google Docs staging is untestable today, which blocks the whole test plan. vite.config.ts:57 compiles GDOCS_BACKEND_URL to the prod origin in every non-dev build, but sidebar.html:200 offers a staging source and the image is built once per commit for both hosts. Picking "staging" in Docs loads the staging bundle against the prod backend — prod auth, prod consent records, prod logs. That makes Feat/503 consent pr2 #566, Handle document-read errors (e.g., Google Docs authorization timeout) #585, and Serialize Google Docs documents to Markdown #581 untestable on Docs without touching production data. Fix is ~5 lines: let resolveServerUrl() derive the origin from the bundle's own script URL, which it already knows how to do.

  2. Handle document-read errors (e.g., Google Docs authorization timeout) #585 ships the bug its own description names. The new requestSuggestion catch sets the error outside getSuggestion, so lastRequestRef is never updated and retryLastRequest re-runs the last successful request with its stale docContext. Chat and Revise re-enter from the top and are correct; draft is the odd one out.

  3. Serialize Google Docs documents to Markdown #581 makes paragraph coordinates host-dependent. It filters blank lines out of getParagraphs() on Docs; Word and the standalone editor both keep empty paragraphs. Paragraph index N stops meaning the same thing across hosts — and that's the coordinate system view and insert-after use.

  4. Serialize Google Docs documents to Markdown #581 and My Words: tolerate typography when matching the writer's words #587 point in different directions on text matching. Serialize Google Docs documents to Markdown #581 makes the model read ## Introduction while the host document contains Introduction; My Words: tolerate typography when matching the writer's words #587 tolerates typography but not Markdown. Inert today (gdocs applyEdit is unimplemented, Google Docs: My Words edits are unimplemented (applyEdit rejects) #590), but it means Google Docs: My Words edits are unimplemented (applyEdit rejects) #590 must be written against Markdown-serialized text, and it strengthens Send hosts ranges, not needles: one text-matching implementation across editors #589 — a range is immune to both problems at once.

The stages

#594 stays draft — it is the tool-launch rearchitecture, and nothing else in the open set depends on the answer, so it doesn't block stages 0–5.

The doc also carries per-PR verdicts, live-test checklists for Word and Docs, and four decisions that need a human: the #585 retry approach, whether to normalize paragraph coordinates across hosts, the #594 direction, and what to do with #449/#446/#435 (2+ months stale).


Generated by Claude Code

Reviews the ten open non-dependabot PRs (excluding #457) against current
main: verifies that none of them conflict textually, identifies the four
semantic collisions that do matter, and sequences the merges around what
each one needs in order to be tested on live Word or Google Docs.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CCBMDpN2d8w7bnK6NhDEih
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants