A staged plan for merging, testing, and deploying the open PRs - #607
Open
kcarnold wants to merge 1 commit into
Open
A staged plan for merging, testing, and deploying the open PRs#607kcarnold wants to merge 1 commit into
kcarnold wants to merge 1 commit into
Conversation
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
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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 arefrontend/CLAUDE.md(four PRs, different sections),backend/CLAUDE.md/docker-compose.yml(#574, #594), andbackend/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
Google Docs staging is untestable today, which blocks the whole test plan.
vite.config.ts:57compilesGDOCS_BACKEND_URLto the prod origin in every non-dev build, butsidebar.html:200offers 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: letresolveServerUrl()derive the origin from the bundle's own script URL, which it already knows how to do.Handle document-read errors (e.g., Google Docs authorization timeout) #585 ships the bug its own description names. The new
requestSuggestioncatch sets the error outsidegetSuggestion, solastRequestRefis never updated andretryLastRequestre-runs the last successful request with its staledocContext. Chat and Revise re-enter from the top and are correct; draft is the odd one out.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 systemviewand insert-after use.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
## Introductionwhile the host document containsIntroduction; My Words: tolerate typography when matching the writer's words #587 tolerates typography but not Markdown. Inert today (gdocsapplyEditis 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
POSTHOG_HOSTfrom the k8s deployment, or its new default does nothing), Render Word manifests from one template per environment #595, the gdocs-origin fix. Exit criteria: staging reachable in both Word and Docs, with Docs demonstrably hitting the staging backend.clasp push, so it isn't done when it's merged), then Handle document-read errors (e.g., Google Docs authorization timeout) #585 with the retry fix.consentUpdatedAtround-trips for a fresh real user, then live-test both hosts. Highest blast radius in the set — a required first-run gate locks everyone out if it misbehaves.brief_proposal_resolved.#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