Repository navigation
Land all 60 open pull requests - #500
Merged
Merged
Conversation
This was referenced Sep 10, 2026
This branch was successfully deployed
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.
Every open pull request in the repository, integrated and validated as one tree.
What was actually open
Not 60 independent PRs — a deep stack. 31 sat on
mainor on this integration branch; the rest were stacked on each other, chains up to nine deep:A stacked branch already contains its ancestors' commits, so the 60 PRs reduce to 38 chain tips. Merging the tips lands everything, and because these are real merge commits rather than squashes, every one of the 60 head commits becomes reachable from
main— so GitHub closes them all as merged rather than leaving 60 orphans.How the conflicts fell out
The i18n catalogues were the bulk of it. Twelve "Localize X in seven languages" PRs all append keys to the same seven flat JSON objects, so git saw overlapping text edits where the authors only ever added distinct keys. Those were resolved by a 3-way key merge — order-preserving, since the files are append-ordered rather than sorted — which reports rather than guesses when two sides change the same key to different values. Nothing was reported: every one was a clean union. All seven catalogues finish at 13,444 keys.
Seven needed real judgement, each decided by reading what the code requires:
FamilyDeliveredValueandFamilyValueComparisonare different cards with different headings, and each PR tests for its own, so both mount; Keep failed subscription reads out of Billing and checkout #475/Review selected family plans before confirming payment #481's three-state subscription read replaced the boolean, so a failed lookup stops looking like "no plan".parseOr; unified on the clearermode: 'or' | 'and'signature and normalized the one straggling caller.weekandweekEventslook like a rename but aren't:weekis the timed-only subset used for overlap detection. Counting all seven family dates is the PR's entire purpose, and neighbouring lines already usedweekEvents.Three collisions only the full suite could find
The first full run came back 2 files failing — both caused by my own resolutions, which is exactly what a full run is for.
Contradictory rules. The helper ended up with an early
returnaccepting a nestedor(...)and, below it, the deliberatethrowrejecting it. The return shadowed the throw, soin-memory-supabase-logicstopped seeing the malformed grammar it pins. Its supported list carriesnot.and(...)and noor(...), so the accepting branch was the stray.Persistent login vs. plan selection. Localize adult authentication prompts and signup divider #482's chain includes Keep saved sessions through refresh and storage failures #470 — an independent persistent-login implementation that overlaps the fix shipped in Stay signed in until you sign out #499. In
lib/supabase/auth.tsthe two chains reached the same conclusion independently; I kept the form that raises through the shared helper and stays inside the session-missing guard, so an ordinary signed-out visitor can never throw.The test file was the sharper half: it mocks a signed-in user for every test, which is right for its success paths but made "the next sign-in attempt" accidentally signed-in — colliding with the rule that a signed-in visitor is never shown a login page. Decisively, its author had already written the signed-out variant (
missing-user), and that was the one case still passing. All three variants now queue one signed-out answer for the failing call, the later successful sign-in still gets the fixture default, and the signed-in case is asserted on its own.The OAuth forward now requires a PKCE verifier cookie — without one no exchange can succeed, and forwarding a stranger's
?code=answered a signed-in visitor with a login page. That test supplies one.Validation
Run against the committed tree, not against pieces:
mainNote on the five drafts
#440,#483,#496,#497and#498were drafts. They are included because the goal was to land every open PR; two are documentation and three are briefing/calendar work whose tests pass here. Flagging it plainly so the choice is visible rather than buried.🤖 Generated with Claude Code
https://claude.ai/code/session_01KP9rt5rVQ9jDMpZp2xBy3K
Generated by Claude Code