constitution · epochs · watch · epoch 3

commit

c_597d3f736194d847e4

tommy-mor · sha1:075d4d378be30399fca986dd6812a18c1668fe78

download patch · raw event

message

Fix OAuth test mocks so Clojure E2E auth flows work again.

HttpServer handlers were crashing on query parsing and token POSTs, which broke Playwright login; also read alias/history via real CSS selectors.

Co-authored-by: Cursor <cursoragent@cursor.com>

comparisons involving this commit

comparison · c_4a5c84c0a37b (tommy-mor) vs c_597d3f736194 (tommy-mor)
openai/gpt-chat-latest · winner A · 3:2 · permalink

Commit A combines a user-facing correctness fix with a substantially stronger end-to-end test. It changes vote URLs to use display paths instead of internal storage URLs, aligning generated links with the UI and DSL, and rewrites the browser test to exercise all 45 pairwise comparisons in a 10-item pool before validating the resulting ranking through the ranking API. That significantly increases coverage and verifies an important algorithmic property rather than just basic flow. Commit B is also valuable, restoring broken OAuth-based E2E authentication by fixing the mock servers and improving test helpers, but its changes are primarily test infrastructure and bug fixes for the mock environment rather than application behavior. Overall, A contributes more functionality and long-term regression protection.

openai/gpt-5.3-chat · winner B · 3:5 · permalink

Commit B restores broken OAuth mock infrastructure that multiple end-to-end auth tests depend on, fixing request parsing, response handling, null safety, and adding error isolation. These changes unblock entire test flows and improve reliability across the suite. Commit A improves URL correctness and adds a strong, exhaustive test for ranking logic, but its impact is more localized compared to the broad test infrastructure repair in B.

openai/gpt-5.2-chat · winner B · 3:2 · permalink

Commit B fixes broken OAuth mock servers and Playwright auth helpers, restoring end-to-end login flows. It addresses crashing handlers, incorrect request body reading, redirect semantics, null token handling, query parsing, and improves test selectors—changes that unblock multiple E2E authentication scenarios. Commit A improves URL display consistency and significantly strengthens a specific vote-pool test with full pair coverage and ranking assertions, but its scope is narrower. Restoring the auth test infrastructure has broader impact across the test suite and developer workflow.

comparison · c_597d3f736194 (tommy-mor) vs c_4772ee88dbe3 (tommy-mor)
openai/gpt-chat-latest · winner B · 4:1 · permalink

Commit B makes a substantially broader architectural change. It removes the demo counter feature, introduces a new settlement worker with asynchronous batching and ranking-cache updates, separates cached ranking reads from recomputation, updates application state management, adjusts UI handling to use read locks, exposes new ranking functionality, adds a new module, and updates tests accordingly. These changes affect core request processing, persistence, and performance. Commit A is a valuable bug-fix focused on restoring OAuth end-to-end tests by correcting mock OAuth server behavior, query/form parsing, redirects, null handling, and Playwright test helpers, but its scope is limited to the test infrastructure. Overall, B contributes significantly more functionality and structural improvement than A.

openai/gpt-5.3-chat · winner B · 5:1 · permalink

Commit B introduces a substantial architectural change: async settlement worker, batched vote processing, ranking cache, API adjustments, and removal of demo-only features. It improves performance, concurrency, and system design across multiple modules. Commit A is valuable but सीमित to fixing test mocks and OAuth flow bugs; it’s primarily a correctness and reliability fix rather than a structural improvement.

openai/gpt-5.2-chat · winner B · 1:5 · permalink

Side B introduces a substantial architectural change: removing the demo counter feature across the stack, adding a new asynchronous settlement worker with batching, introducing cached ranking computation, refactoring state management to use a SettlementClient, adjusting locking strategy (write → read where possible), updating ranking APIs, and modifying multiple integration tests. It adds a new module and significantly changes core request handling and persistence flow. In contrast, Side A focuses on fixing and hardening OAuth test mocks and related E2E test utilities, which, while valuable, are limited to test infrastructure and bug fixes. The scope and impact of Side B are considerably larger.

comparison · c_4a5c84c0a37b (tommy-mor) vs c_597d3f736194 (tommy-mor)
openai/gpt-chat-latest · winner B · 3:2 · permalink

Side B fixes multiple concrete failures in the OAuth test infrastructure that were breaking end-to-end authentication: it corrects request parsing (`getRequestBody` instead of `getInputStream`, regex-based query splitting), prevents null-related crashes, fixes redirect handling, and wraps mock handlers to return diagnostics instead of crashing. Side A improves URL generation by using display paths and substantially strengthens the vote-pool test with full pairwise coverage and ranking assertions, but much of its patch is expanded test logic rather than core functionality, whereas Side B restores a foundational test/auth flow used across the project.

openai/gpt-5.3-chat · winner A · 3:2 · permalink

A changes production code to use `display_path()` in vote URLs instead of full storage URLs, aligning links with user-visible paths, and adds a comprehensive test that exercises all 45 pairwise votes and validates final ranking correctness. B primarily fixes test infrastructure (query parsing, request body reading, null handling, and mock server robustness) to restore OAuth E2E tests, which is valuable but less impactful than A’s user-facing behavior change plus stronger correctness guarantees.

openai/gpt-5.2-chat · winner B · 3:2 · permalink

Side B fixes concrete crashes in the OAuth test infrastructure: it corrects query parsing (`str/split pair #"=" 2`), reads POST bodies from `.getRequestBody`, guards `parse-token-user` against nil, ensures redirects send a 0-length body instead of -1, and wraps the HttpHandler in a try/catch to prevent server crashes—restoring broken Playwright login flows. Side A improves URL display paths and strengthens a vote-pool test to cover all 45 pairs with a ranking assertion, but B addresses fundamental test auth failures that blocked E2E flows.

~anthropic/claude-sonnet-latest · winner B · 6:4 · permalink

Side B fixes genuine crashing bugs in shared OAuth test infrastructure (str/split called with a string instead of a regex, .getInputStream vs the correct .getRequestBody, missing nil-guards, plus a catch-all error handler) that were breaking all Playwright-based E2E auth flows—this is a real, broadly-impactful bugfix. Side A improves href display and rewrites one test to be more thorough, which is useful but narrower in scope and affects only vote-pool link rendering and one test's coverage.

~x-ai/grok-latest · winner B · 3:2 · permalink

B fixes concrete test-infra bugs (Clojure `str/split` on "=" vs #"=", `getRequestBody` vs `getInputStream`, null-safe token/state handling, 302 response length) that had broken OAuth mocks and thus all Playwright auth E2E flows. A’s `display_path` href change is a real prod consistency fix and the 45-pair ranking assertion is stronger coverage, but it extends one feature path rather than restoring foundational auth testing across the suite.

comparison · c_597d3f736194 (tommy-mor) vs c_4772ee88dbe3 (tommy-mor)
openai/gpt-chat-latest · winner B · 4:1 · permalink

Side B introduces a substantial architectural improvement by removing the demo counter, adding a dedicated settlement worker that batches vote persistence and ranking recomputation, separating cached ranking reads from recomputation (`ranked_items_cached`), and updating state management to use this flow. Side A is a valuable test infrastructure bugfix—repairing OAuth mock request handling (`getRequestBody`, query parsing, null checks, redirect/state handling, exception handling) and stabilizing Playwright auth tests—but its impact is primarily confined to test reliability rather than the project's core runtime design.

openai/gpt-5.3-chat · winner B · 4:1 · permalink

Side A fixes several concrete test/mock issues (e.g., correct query splitting with regex, using getRequestBody instead of getInputStream, guarding null tokens, and preventing handler crashes with try/catch), restoring E2E auth flows. Side B introduces a substantial architectural improvement: a new async settlement worker with batching, cached ranking computation (ranked_items_cached), and removal of write-lock recomputation, which meaningfully improves performance and design beyond a simple fix.

openai/gpt-5.2-chat · winner B · 3:1 · permalink

Side B introduces a substantial architectural improvement: a new asynchronous settlement worker with batching (`settlement.rs`), cached ranking via `ranked_items_cached`, and refactors `AppState::record_vote` to decouple disk I/O and score recomputation from request handling. It also removes the demo counter feature and switches to read locks for rendering, improving performance and concurrency. Side A meaningfully fixes OAuth test mocks (e.g., correct request body reading, safer token parsing, try/catch in handlers), but its impact is limited to test stability rather than core runtime design.

~anthropic/claude-sonnet-latest · winner B · 6:4 · permalink

B removes dead demo-counter code and introduces a real architectural improvement (async settlement worker with batching, cached ranking scores, warm-cache on startup) that affects core server behavior and performance, backed by updated tests. A fixes genuine bugs in test-only mock OAuth/HTTP helpers (regex split, getRequestBody vs getInputStream, nil-safe state encoding, exception handling) which is valuable for reliable E2E testing but scoped only to test infrastructure, not production code.

~x-ai/grok-latest · winner B · 2:5 · permalink

B removes scaffold demo-counter surface area and adds a lasting settlement worker (batched vote apply, event-log append, ranking cache warm/read path, read locks on ranking panel)—core production design. A correctly fixes test OAuth mocks (regex split, getRequestBody, null-safe state/token, handler try/catch) and login selectors, but value is confined to E2E test recovery rather than product architecture.

comparison · c_597d3f736194 (tommy-mor) vs c_b00c261f06c2 (tommy-mor)
~anthropic/claude-sonnet-latest · winner B · 6:4 · permalink

B fixes a real product bug (per-group rank indexing was leaking a global offset into gradient styling, and vote history slider/ratio polarity) and adds targeted unit tests (rank_row_style_gradients, winner_side, slider mapping, ranking polarity) that lock in the corrected behavior. A only patches test-support mock server code (regex vs string split, response header codes, request body access) which is useful for keeping E2E tests green but has no effect on the shipped product.

~x-ai/grok-latest · winner B · 2:3 · permalink

B fixes user-facing vote/rank correctness (per-group gradient ranks instead of a global ordinal, center-anchored winner highlighting, history sliders aligned with HUD polarity) and locks it in with targeted Rust tests. A is a real, necessary repair of broken OAuth E2E mocks (regex split, getRequestBody, null-safe state/token, handler try/catch) plus selector tweaks, but it only restores test infrastructure rather than lasting product behavior.

openai/gpt-chat-latest · winner A · 3:1 · permalink

Side A restores broken end-to-end OAuth authentication tests by fixing concrete server mock failures: it corrects form/body reading (`getRequestBody`), query parsing, redirect handling, null safety, and wraps handlers to avoid crashes, while also improving test interactions with selectors. Side B mainly improves vote comparison highlighting and history presentation with associated logic and tests, but these are UI behavior refinements rather than fixing a foundational test infrastructure regression.

comparison · c_597d3f736194 (tommy-mor) vs c_bc8c17a00ed7 (tommy-mor)
~anthropic/claude-sonnet-latest · winner B · 6:4 · permalink

Side B adds a real, self-contained product feature (filtering pinned/stickied Reddit posts) with a clear unit test verifying the behavior, directly improving import correctness. Side A is test-infrastructure churn fixing bugs introduced by prior test-only code (regex vs string split, wrong request-body method, negative content-length), valuable for CI health but not for the shipped product.

~x-ai/grok-latest · winner A · 2:1 · permalink

A restores broken E2E auth by fixing real mock-server bugs (query split on #"=", getRequestBody vs getInputStream, 302 content-length, null-safe token/state, handler error handling) plus selector-based login assertions. B is a clean, tested product tweak (skip stickied/pinned listing children) but narrower in scope than unblocking auth flows and correcting the shared OAuth/Reddit test doubles.

openai/gpt-chat-latest · winner A · 3:1 · permalink

Side A repairs multiple concrete failures in the OAuth test infrastructure: it fixes query parsing (`str/split` regex), reads POST bodies correctly (`getRequestBody`), avoids null token/state crashes, adjusts redirect handling, wraps handlers to prevent server crashes, and improves Playwright test synchronization and selectors. Side B is a focused behavioral improvement that skips pinned Reddit posts during import with a helper and regression test, but its scope and impact are narrower than restoring and hardening the end-to-end authentication test framework.

comparison · c_597d3f736194 (tommy-mor) vs c_9bced108c8aa (tommy-mor)
~anthropic/claude-sonnet-latest · winner B · 75:25 · permalink

Side B introduces a substantial, well-tested URL canonicalization/graph system (graph traversal engine, builder with validation, parser, and extensive regression/equivalence tests) that provides real lasting architecture for URL normalization. Side A is a smaller, useful bugfix (regex split, response body stream fix, error handling, selector correctness) that restores test infrastructure but has narrower, more localized impact confined to test mocks.

~x-ai/grok-latest · winner B · 1:5 · permalink

B introduces a full semantic URL graph (DFA traversal, GraphBuilder, parse/normalize, canonicalization and breadcrumbs) with broad production impact and extensive tests, whereas A only repairs test OAuth mocks and E2E helpers (query split, request body, null/state guards, selectors). B’s lasting product design outweighs A’s valuable but scoped test-infrastructure bugfixes.

openai/gpt-chat-latest · winner B · 5:1 · permalink

Side B introduces a substantial new URL canonicalization subsystem with a graph-based traversal engine, parsing and normalization logic, a graph builder with validation, generic fallback behavior, and extensive unit/end-to-end tests covering Reddit, YouTube, and generic URLs. Side A is a valuable targeted test infrastructure bugfix—correcting mock OAuth request handling, redirect behavior, null safety, and Playwright test selectors—but its scope is limited to restoring E2E test reliability rather than adding a lasting project capability.

comparison · c_597d3f736194 (tommy-mor) vs c_77729db919ab (tommy-mor)
~anthropic/claude-sonnet-latest · winner B · 8:2 · permalink

Side B introduces a substantial architectural change: a composable url_rules engine/registry replacing ad-hoc string canonicalization, making ItemId a real full URL and enabling extensible per-domain rules (reddit, youtube, tracking-param stripping) with broad test coverage across the codebase. Side A is a smaller, valid bugfix restoring OAuth E2E test mocks (regex split, exception handling, correct HttpExchange API), which is useful but narrowly scoped to test infrastructure rather than core product design.

~x-ai/grok-latest · winner B · 4:1 · permalink

B introduces a lasting core design: ItemId as full canonical URLs plus a composable url_rules engine (Reddit/YouTube normalization, parents/breadcrumbs) wired through path_types, reddit mapping, projection, and tests. A only patches test doubles (regex split, getRequestBody, redirect length, null token) and minor Playwright selectors so E2E auth runs again—real but localized infrastructure fix.

openai/gpt-chat-latest · winner A · 4:1 · permalink

Side A restores broken OAuth end-to-end authentication by fixing concrete runtime issues in the mock servers: it corrects query parsing (`str/split` regex), reads POST bodies from `getRequestBody`, avoids null crashes when parsing bearer tokens and state, wraps handlers in error handling, and updates the Playwright test helpers to use real selectors and return status instead of sleeping. Side B introduces a URL canonicalization framework and updates many call sites and tests, but this patch is largely a broad refactor with widespread mechanical changes and supporting infrastructure rather than a clearly demonstrated bugfix of comparable immediate, lasting impact.

comparison · c_597d3f736194 (tommy-mor) vs c_7ec4b410de02 (tommy-mor)
~anthropic/claude-sonnet-latest · winner B · 6:4 · permalink

Side B adds a real user-facing feature (clickable unpin from ranked child groups) with corresponding UI, CSS, and expanded test coverage exercising the new flow end-to-end. Side A is a legitimate but narrow test-infra bugfix (regex split, error handling in mock server, selector-based test helpers) that only improves test reliability rather than product functionality.

~x-ai/grok-latest · winner A · 2:1 · permalink

A restores broken E2E auth by fixing real mock-server bugs (Clojure `str/split` needing a regex, reading `getRequestBody` instead of `getInputStream`, 302 content-length, null-safe token/state handling, handler error trapping), which unblocks Playwright login flows project-wide. B is a solid but narrower UX polish: wire the existing `set_garden_pin` clear POST into ranked child-row pin icons plus CSS/test coverage, valuable locally but less foundational than repairing auth test infrastructure.

openai/gpt-chat-latest · winner A · 3:2 · permalink

Side A restores broken end-to-end authentication tests by fixing multiple concrete defects in the mock OAuth servers: correct query parsing with regex splitting, reading POST bodies from `getRequestBody`, guarding null bearer tokens/state, using proper redirect response handling, and wrapping handlers to avoid crashes, alongside improving Playwright test selectors and synchronization. Side B adds a useful UI enhancement by making ranked-list pin icons submit the existing `set_garden_pin` unpin flow with supporting CSS and browser tests, but it is a narrower feature addition than A's broad reliability fixes for the project's authentication test infrastructure.

comparison · c_97611919bf0b (tommy-mor) vs c_597d3f736194 (tommy-mor)
~anthropic/claude-sonnet-latest · winner A · 65:35 · permalink

Side A performs a substantial structural refactor introducing a typed ItemId enum to replace stringy CanonicalItemUrl across the reducer, ranking, RPC, and HTML layers, plus splitting wire-normalization logic into item_wire.rs, touching many core files and tests consistently. Side B is a smaller but genuinely useful bugfix to test-only mock OAuth/reddit servers and Clojure test helpers (fixing regex splits, request body vs input stream, redirect codes, error handling), which is real but narrower in scope and confined to test infrastructure rather than production code.

~x-ai/grok-latest · winner A · 4:1 · permalink

Commit A lands the core ItemId redesign (new item_id/item_wire modules, removal of CanonicalItemUrl, and propagation through reducer, ranking, RPC, and HTML), a lasting domain-model improvement. Commit B only repairs OAuth/Reddit test mocks and a few Playwright helpers (query split, getRequestBody, redirect length, null-safe token/state), which restores E2E auth but is narrower test-infrastructure value.

openai/gpt-chat-latest · winner A · 6:1 · permalink

Side A performs a substantial architectural migration from the string-based `CanonicalItemUrl` to a structured `ItemId` across reducer state, ranking, routing, APIs, and tests, while introducing new `item_id` and `item_wire` modules and updating link generation to use typed identities. Side B fixes important OAuth test infrastructure issues (query parsing, request body reading, redirect handling, null checks, and mock robustness), but those changes are confined to test mocks and E2E reliability rather than the project's core design.

comparison · c_597d3f736194 (tommy-mor) vs c_66eb04076a98 (tommy-mor)
~anthropic/claude-sonnet-latest · winner A · 6:4 · permalink

Side A fixes real bugs in test infrastructure (wrong regex-vs-string split arg, wrong response body length causing broken redirects, wrong stream method, unguarded nil token) plus adds exception handling and CSS-selector-based readers, unblocking a broken E2E auth suite. Side B is a smaller, self-contained UI refinement (min-max normalization for rank coloring) that's well-tested but lower-impact and more cosmetic than a functional bugfix.

~x-ai/grok-latest · winner A · 2:1 · permalink

A fixes concrete mock HttpServer bugs (request body via getRequestBody, regex split, null-safe tokens/state, 302 length, handler try/catch) that had broken Clojure E2E auth, plus aligns test helpers with real selectors—restoring a critical verification path. B is a sound production UX tweak (score min–max gradient vs ordinal) with tests, but it refines presentation rather than unblocking core flows.

openai/gpt-chat-latest · winner A · 4:1 · permalink

Side A fixes multiple concrete failures in the OAuth test infrastructure that were breaking end-to-end authentication: it corrects query parsing (`str/split` with regex), reads POST bodies from `getRequestBody`, guards against null bearer tokens and missing state, fixes redirect response handling, wraps handlers to avoid crashes, and updates Playwright test selectors and alias handling. Side B improves the UI by coloring rank rows based on normalized score ranges instead of list position and adds focused tests, but it is primarily a presentation enhancement rather than a broad reliability fix.

comparison · c_597d3f736194 (tommy-mor) vs c_11d6a0ec9839 (tommy-mor)
~anthropic/claude-sonnet-latest · winner B · 6:4 · permalink

Side B fixes real production logic (correcting the vote-suggestion fallback that silently degraded to the wrong pool, moving agent attribution out-of-band, removing a dead 'swap' button, and simplifying the route), all backed by updated integration tests — genuine behavioral improvements to the running app. Side A is a solid but narrower fix, correcting several test-harness bugs (wrong Java methods, string vs regex split, null handling) that only restore E2E test reliability without changing product behavior.

~x-ai/grok-latest · winner B · 2:3 · permalink

B improves production behavior with a real design fix (WEB_BROWSER_AGENT via delegate_opt instead of DSL body text) and correct next-pair logic (return None when sibling pool < 2 instead of silently falling back to all items), plus useful UX/route cleanup. A restores E2E auth with solid mock fixes (request body API, regex split, nil-safe token/state handling) but is test-infrastructure only, so it lands slightly less lasting product value despite being precise bugfixes.

openai/gpt-chat-latest · winner A · 4:1 · permalink

Side A repairs the OAuth test infrastructure with concrete correctness fixes: it corrects query parsing (`str/split` with regex), reads POST bodies from `getRequestBody`, avoids null handling crashes, fixes redirect/state handling, wraps the mock handler to prevent server crashes, and updates Playwright helpers to use real selectors and deterministic waits. Side B contains a mix of UX and routing changes (renaming `/vote/compare` to `/vote`, removing the swap button, changing fallback behavior, and passing a delegate option), but those are largely feature and cleanup changes rather than restoring broken core test functionality.

comparison · c_3f420a1f5aa1 (tommy-mor) vs c_597d3f736194 (tommy-mor)
~anthropic/claude-sonnet-latest · winner B · 6:4 · permalink

B fixes real, concrete bugs (str/split with a string instead of regex, reading from the wrong stream, -1 vs 0 content-length, unhandled nil token/state causing crashes) that were actually breaking E2E auth tests, plus adds exception handling so the mock server doesn't die silently. A is a larger feature/refactor (theme cookie plumbing, room-scoped URL rewriting) which is plausibly useful but is unreviewed new surface area with added complexity across many files, whereas B's changes are small, targeted, and verifiably correct fixes to broken test infrastructure.

~x-ai/grok-latest · winner A · 4:1 · permalink

A delivers durable product design: cookie-based SSR theming (POST /theme, layout/auth re-issue so login keeps theme) plus real private-room wire fixes (item_path_for_api_in_room, forum_thread_web_url, RPC/CLI URL correctness and tests). B is a precise, valuable unblocker for E2E OAuth mocks (split regex, getRequestBody, null-safe state/token, redirect length) but is test-only and narrower in lasting project impact.

openai/gpt-chat-latest · winner A · 9:1 · permalink

Side A adds substantial user-facing and architectural functionality: persistent theme selection via cookies and a new `/theme` endpoint integrated across HTML rendering, preserves theme through authentication by reissuing cookies, and introduces room-aware URL generation (`item_path_for_api_in_room`, `forum_thread_web_url`) with broad RPC integration and tests. Side B is a valuable maintenance fix that repairs OAuth test mocks (query parsing, request-body handling, redirects, null checks, exception handling) so end-to-end auth tests work again, but its impact is confined to test infrastructure rather than core project behavior.

comparison · c_af08bd851e49 (tommy-mor) vs c_597d3f736194 (tommy-mor)
~anthropic/claude-sonnet-latest · winner A · 63:37 · permalink

Side A adds substantial lasting functionality: a new pair.rs module with a principled bridge-based pair-suggestion algorithm (with unit tests), a new vote.rs compare-page module, a genuine bugfix in ItemId normalization (from_storage) that fixes ID mismatches across form/event/reddit-import boundaries, and extraction of a reusable mock-reddit test helper. Side B is a narrower but real bugfix to mock OAuth test harness (fixing a str/split regex bug and body-read/redirect issues) that only restores broken E2E test infrastructure without adding new capability.

~x-ai/grok-latest · winner A · 7:1 · permalink

A ships lasting product design: a full /vote compare flow with in-place morph updates, bridge-preferring pair selection in pair.rs, ItemId::from_storage normalization, and related integration coverage. B only repairs OAuth/Reddit test mocks (split regex, getRequestBody, redirect length, null guards) so E2E auth works again—valuable but narrow infrastructure, not core behavior.

openai/gpt-chat-latest · winner A · 9:1 · permalink

Side A adds substantial new functionality and infrastructure: a full pairwise voting UI, pair-selection logic that prioritizes bridge comparisons across ranking components, incremental DOM morph updates after voting, improved ItemId normalization via `from_storage`, and accompanying integration/tests. Side B fixes test infrastructure for OAuth/Reddit mocks (correct request-body handling, redirect behavior, query parsing, null checks, and Playwright helpers), which is valuable for test reliability but is confined to the test harness rather than the project's core behavior.

comparison · c_afa638171cf7 (tommy-mor) vs c_597d3f736194 (tommy-mor)
~anthropic/claude-sonnet-latest · winner A · 65:35 · permalink

Side A delivers a substantive feature and architecture shift (UUID as canonical identity, Reddit OAuth linking, private provider list, new storage helper, events, and UI changes) that meaningfully expands the product's identity model. Side B is a narrow but necessary follow-up bugfix (regex vs string split, wrong body-read method, sendResponseHeaders arg, nil-state encoding, added try/catch) that repairs mocks A itself introduced so E2E tests actually run — valuable but strictly corrective and much smaller in scope than A's design contribution.

~x-ai/grok-latest · winner A · 8:1 · permalink

A ships a lasting identity redesign (UUID-canonical principals, multi-provider link/conflict flow, private linked-provider UI), full Reddit OAuth in production auth code, trust-weight batch correctness, and supporting schema/routes—core product architecture. B only repairs test doubles and E2E helpers (regex split, getRequestBody, redirect length, nil-safe token parse, alias wait selectors), which matters for CI but is narrow tooling relative to A’s feature and design depth.

openai/gpt-chat-latest · winner A · 9:1 · permalink

Side A introduces substantial, lasting functionality: it redesigns identity around UUIDs with OAuth account linking, adds Reddit OAuth support end-to-end (routes, provider implementation, callbacks, UI, storage queries), and fixes trust-weight projection batching by tracking pending writes. Side B is a focused test infrastructure repair, correcting mock HTTP behavior (query parsing, request body reading, redirects, null handling) and updating test selectors so end-to-end auth tests run again, but it primarily supports development rather than changing core project capabilities.

comparison · c_c6f5afec1d36 (tommy-mor) vs c_597d3f736194 (tommy-mor)
~anthropic/claude-sonnet-latest · winner B · 6:4 · permalink

Side B fixes real, concrete bugs (str/split with a string instead of regex, .getInputStream vs .getRequestBody, nil state/token causing NPEs, missing exception handling causing silent test failures) that were actively breaking OAuth E2E tests — these are genuine correctness fixes with lasting value. Side A adds a plausible feature (pool-scoped voting) with reasonable plumbing, but it's more speculative feature work with less certainty of correctness (e.g., new endpoint behavior, no new tests for the pool path) compared to B's targeted, verifiable bugfixes restoring broken test infrastructure.

~x-ai/grok-latest · winner A · 3:1 · permalink

A adds a real product capability (pool-scoped pairwise voting, optional pool query, constrained next-pair navigation, and a children vote entry point) wired through UI, form/RPC state, and suggest-next logic. B only restores E2E auth by patching test mocks (query split regex, getRequestBody, null-safe token/state, response length) and selector helpers—necessary maintenance, but narrower and test-only versus A’s lasting user-facing design.

openai/gpt-chat-latest · winner A · 4:1 · permalink

Side A adds a substantial new capability: pool-scoped voting, including new `/vote?pool=` request handling, automatic pair selection from child items, pool-aware next-pair navigation, UI links, and propagation of pool context through vote submission and success updates. Side B improves the test infrastructure by fixing OAuth mock request parsing, redirect/form handling, null safety, and Playwright selectors so end-to-end authentication tests work again, but those changes primarily affect testing rather than the application's core functionality.

comparison · c_8dc1a8119370 (tommy-mor) vs c_597d3f736194 (tommy-mor)
~anthropic/claude-sonnet-latest · winner A · 65:35 · permalink

Side A eliminates an ~1800-line over-engineered, admittedly unreliable keystroke-parsing graph and its associated test/dependency (parser_action.rs, parser_race.clj, Playwright setup) and replaces it with a small, robust 87-line URL parser plus simple paste-and-go UI — a substantial net simplification and reliability fix to production code. Side B fixes real bugs in test-mock infrastructure (regex vs string split, wrong stream calls, redirect response codes, nil state), which is valuable but scoped narrowly to test harness correctness rather than the application's core design.

~x-ai/grok-latest · winner A · 4:1 · permalink

A replaces an unreliable ~1.8k-line keystroke graph, action types, race harness, and live-complete UI with a small paste-and-go URL parser plus redirect—lasting design simplification and a real product path. B only repairs OAuth/E2E mocks (split regex, request body, nil-safe token/state, CSS selectors), which restores tests but is narrower and non-product.

openai/gpt-chat-latest · winner A · 4:3 · permalink

Side A replaces a large, unreliable autocomplete transition-graph with a much simpler URL parser and paste-and-go flow, removing substantial complexity (`parser_action.rs`, graph logic, client-side race handling) while adding focused parsing tests and direct navigation to subreddit pages. Side B fixes important OAuth test infrastructure bugs (correct request body reading, safer query/state parsing, redirect handling, and mock exception handling), but its impact is confined to restoring E2E test reliability rather than simplifying core application behavior.

comparison · c_597d3f736194 (tommy-mor) vs c_978e283f2229 (tommy-mor)
~anthropic/claude-sonnet-latest · winner B · 6:4 · permalink

Side B is a substantive CLI redesign that restructures 'ingest' into a proper 'forum post/list/show' subcommand hierarchy, requires --delegate explicitly, updates docs (DSL.txt, GUIDE.sorter) and server RPC hints, and updates integration tests to match—delivering real lasting UX/architecture value. Side A is a narrower but legitimate bugfix improving mock OAuth test infra (regex split, exception handling, real CSS selectors), which is useful but smaller in scope and impact than B's broader CLI restructuring.

~x-ai/grok-latest · winner B · 2:1 · permalink

B redesigns the lasting user-facing CLI contract (ingest → scoped `forum post <TAG>` with required `--delegate`, explicit `forum list|show|post`, doc/RPC next-move strings, and integration coverage), which defines how agents and humans drive the product going forward. A is real, necessary test-infra repair (HttpServer body/query parsing, redirect length, nil-safe token/state, handler try/catch, selector-based auth assertions) but stays confined to mock OAuth/E2E support rather than shipping surface area.

openai/gpt-chat-latest · winner A · 4:1 · permalink

Side A fixes concrete failures in the OAuth test infrastructure by correcting query parsing (`str/split` with regex), reading POST bodies from `getRequestBody`, handling nil tokens/state safely, adjusting redirect responses, wrapping handlers with error handling, and updating Playwright helpers to use real selectors—changes that restore broken end-to-end authentication tests. Side B primarily reorganizes the CLI interface and documentation (e.g. replacing `ingest` with `forum post`, splitting `forum` into `list/show/post`, and updating help text and tests), which is useful but is largely an API/UX reshape rather than a core correctness fix.

comparison · c_597d3f736194 (tommy-mor) vs c_c25451965a7f (tommy-mor)
~anthropic/claude-sonnet-latest · winner B · 6:4 · permalink

B fixes a real production bug (hardcoded hostnames breaking OAuth redirects across multiple providers) with a consolidated get-base-url utility applied consistently across 7 files, plus deploy workflow correction—broader, more impactful, and better factored. A is a solid test-infra fix (regex split bug, error handling, selector correctness) but is scoped narrowly to test mocks rather than production code paths.

~x-ai/grok-latest · winner B · 2:3 · permalink

B centralizes brittle, duplicated hostname/redirect logic into util/get-base-url (HOSTNAME-aware) across oauth/login/spotify/twitter/youtube/linear and the frontend origin, plus wires staging deploys—lasting production design. A is real, precise mock/E2E fixes (regex split, getRequestBody, nil-safe tokens/state, handler try/catch) but remains test-only scaffolding.

openai/gpt-chat-latest · winner B · 2:3 · permalink

Side B introduces a centralized `util/get-base-url` used across multiple OAuth/callback integrations (Linear, Spotify, Twitter, YouTube, login, OAuth) and updates the frontend to derive URLs from `window.location.origin`, eliminating scattered hardcoded hostnames and improving deployment portability. Side A contains important test infrastructure fixes—correcting mock OAuth request handling (`getRequestBody`, query parsing, null checks, redirects, exception handling) and stabilizing Playwright auth tests—but its impact is primarily confined to the test suite rather than the application's runtime design.

comparison · c_cd965c070df3 (tommy-mor) vs c_597d3f736194 (tommy-mor)
~anthropic/claude-sonnet-latest · winner A · 6:4 · permalink

Side A fixes real production behavior (Reddit child import bypassing ensure_path, ranking panel showing raw ids instead of titles) with corresponding reducer.rs API changes, while Side B only patches test-support mocks (regex-vs-string split, getRequestBody vs getInputStream, null-token guard). Both fix genuine bugs, but A's changes affect actual application logic in server/src, whereas B's impact is confined to test harness reliability.

~x-ai/grok-latest · winner A · 3:1 · permalink

A fixes production Reddit import behavior (apply_entity_under_parent so listings attach without ensure_path nesting, and ranking_panel/child_label so unranked children show real titles) plus integration coverage; B only repairs test mocks (query split, getRequestBody, null-safe token/state) and Playwright helpers with no app-code impact.

openai/gpt-chat-latest · winner A · 4:1 · permalink

Side A fixes core application behavior by changing Reddit child imports to attach entities directly under the intended parent without path expansion, adds `apply_entity_under_parent` to preserve entity data, and updates the ranking panel to display imported child titles via the global tree instead of fallback IDs. It also extends integration tests to cover SSE updates and children imports, whereas Side B mainly repairs test mock infrastructure (query parsing, request handling, redirects, and Playwright selectors) so authentication E2E tests run again.

comparison · c_597d3f736194 (tommy-mor) vs c_a896b2dc05d5 (tommy-mor)
~anthropic/claude-sonnet-latest · winner A · 6:4 · permalink

Side A fixes concrete, crash-causing bugs (string split needing a regex arg, wrong HttpExchange method for reading POST bodies, missing null guards, unhandled exceptions crashing the mock server) that were breaking the OAuth e2e test suite, directly restoring test reliability. Side B is a legitimate but debatable refactor (Deque->Vec/List, deferred capping) that trades write-time bounded storage for unbounded growth capped only at read time, which is a real design tradeoff rather than a clear correctness win, despite including a new test.

~x-ai/grok-latest · winner B · 2:3 · permalink

B redesigns core projection storage (Deque→List, write-time trim→read-time cap, schema v4, simpler vote application) with a focused regression test, lasting in the production server path. A only repairs test OAuth mocks (query split, request body, null/state guards) and E2E selectors—real but confined to test infra.

openai/gpt-chat-latest · winner A · 4:1 · permalink

Side A fixes multiple concrete failures in the OAuth test infrastructure: it corrects query parsing (`str/split` with regex), reads POST bodies from `getRequestBody`, guards against null tokens/state, adjusts redirect handling, wraps handlers to avoid crashes, and improves Playwright test synchronization and selector lookup. Side B is largely a storage refactor from deque to list with schema changes and query-time capping, but it mostly changes implementation strategy rather than addressing a demonstrated correctness issue, making its lasting impact less certain than A's direct restoration of broken end-to-end authentication tests.

comparison · c_597d3f736194 (tommy-mor) vs c_1c1c8e7a2de8 (tommy-mor)
~anthropic/claude-sonnet-latest · winner B · 6:4 · permalink

Side B is a substantive feature: it wires up a full room-create path from CLI through RPC to reducer/events, simplifying a dead/unused visibility concept, updating tests, and adding docs/help text—net simplification plus new user-facing capability. Side A is a valuable but narrower bugfix restoring test infra (HTTP server byte handling, regex split, error trapping) that only affects test reliability, not production code or features.

~x-ai/grok-latest · winner B · 2:5 · permalink

B adds a real CLI `room create` path and simplifies the core domain by dropping ThreadVisibility/RoomState in favor of a private-room HashSet, with matching RPC, reducer, docs, and tests—lasting product and model value. A only repairs test doubles (request body vs input stream, query split regex, nil token/state, handler try/catch) and Playwright helpers so E2E auth runs again, which is necessary but test-only.

openai/gpt-chat-latest · winner A · 3:1 · permalink

Side A fixes concrete failures in the OAuth test infrastructure by correcting query parsing (`str/split` with regex), reading POST bodies from `getRequestBody`, guarding null bearer tokens and state values, wrapping mock handlers in error handling, and updating the Playwright helpers to use real selectors instead of brittle timing. These changes directly restore broken end-to-end authentication flows, whereas Side B mainly adds a CLI path for room creation and simplifies room metadata by removing unused visibility handling, which is useful but less critical and less of a correctness fix.

comparison · c_0c466eea1ed4 (tommy-mor) vs c_597d3f736194 (tommy-mor)
~anthropic/claude-sonnet-latest · winner A · 3:2 · permalink

Side A introduces a genuinely new, well-scoped capability (a workspace-only sorterc tool with a documented CLI, reused validation/reducer logic, and unit tests) that provides ongoing developer value beyond this commit. Side B is a solid, real bugfix (fixing actual crashes like calling .getInputStream instead of .getRequestBody, and str/split with a string instead of a regex) that restores broken E2E auth tests, but its scope and lasting impact are narrower than A's new tool and test coverage.

~x-ai/grok-latest · winner A · 3:1 · permalink

A adds reusable offline compile/scan APIs (offline.rs ~300 LOC with ranking simulation, JSONL replay, and unit tests) plus a documented workspace binary that permanently improves DSL/CI workflows. B only repairs test doubles (regex split, getRequestBody, nil-safe state encode, try/catch) and a couple of Playwright helpers so E2E auth runs again—valuable but narrower and test-only.

openai/gpt-chat-latest · winner A · 4:1 · permalink

Side A adds a substantial new offline tooling capability by introducing a reusable server-side `offline` module plus a `sorterc` CLI that compiles `.sorter` files, replays JSONL event logs, reports malformed ingests, and includes tests and documentation. Side B fixes important OAuth test infrastructure issues (query parsing, request body handling, redirects, null handling, and Playwright selectors), but those changes are confined to test mocks and restore existing E2E behavior rather than adding broadly reusable project functionality.

comparison · c_64faa3bee86f (tommy-mor) vs c_597d3f736194 (tommy-mor)
~anthropic/claude-sonnet-latest · winner B · 6:4 · permalink

Side B fixes real, concrete bugs: str/split called with a plain string instead of a regex, .getInputStream instead of .getRequestBody, unguarded str/starts-with? on nil tokens, sendResponseHeaders misuse, and adds error handling so the mock OAuth server doesn't silently crash tests. Side A is a reasonable UX improvement (inline form morphing instead of redirects) but is more speculative feature work with less certain lasting necessity, whereas B restores broken E2E test infrastructure that other work depends on.

~x-ai/grok-latest · winner A · 2:1 · permalink

A delivers a lasting product design change: auth posts return HTML fragments, poem JS morphs form innerHTML for inline errors/success, and auth uses the shared layout instead of redirects/a separate layout. B is valuable but narrower—null-safety and HttpServer mock fixes (split regex, getRequestBody, sendResponseHeaders length, try/catch) that restore Clojure E2E auth tests without changing production behavior.

openai/gpt-chat-latest · winner A · 3:2 · permalink

Side A makes a lasting application-level improvement by changing the auth flow from redirects to HTML fragments, adding reusable rendering helpers, and extending the shared Poem JS form handler to morph returned HTML for inline success/error feedback while preserving existing empty-response behavior. Side B primarily repairs test infrastructure and OAuth mocks (query parsing, request body reading, null handling, redirect responses, and exception handling), which is valuable for reliability but is confined to the test environment rather than the product's core behavior.

comparison · c_c42f908efc44 (tommy-mor) vs c_597d3f736194 (tommy-mor)
~anthropic/claude-sonnet-latest · winner B · 6:4 · permalink

Side B fixes real crashing bugs in test infrastructure (wrong str/split arity, wrong HttpExchange method calls, unguarded nil derefs, missing exception handling causing hangs) that were actually breaking E2E auth test runs. Side A is a mechanical refactor introducing Deref newtypes and threading CanonicalItemUrl through call sites, which is reasonable cleanup but lower-stakes than fixing a broken test harness that blocks CI signal.

~x-ai/grok-latest · winner A · 2:1 · permalink

A threads CanonicalItemUrl through resolve_item, validate, pair selection, and rank-change maps while adding Deref on the href newtypes, removing repeated String↔canonical wrapping across production API paths. B only repairs test OAuth mocks (request body API, split regex, null state/token, redirect length) and selector helpers so Playwright login works again—necessary but localized to test support rather than core domain types.

openai/gpt-chat-latest · winner A · 3:2 · permalink

Side A makes a broad, lasting type-safety refactor by changing `resolve_item` to return `CanonicalItemUrl`, propagating canonical URL newtypes through validation, ranking, RPCs, and connectivity logic, and adding `Deref<Target=str>` implementations to reduce string conversions. Side B fixes important test infrastructure for OAuth E2E flows (correct request-body reading, safer query/token parsing, redirect handling, and mock error handling), but those improvements are confined to test mocks rather than the project's core APIs and data model.

comparison · c_8c6a5e2e4a54 (tommy-mor) vs c_597d3f736194 (tommy-mor)
~anthropic/claude-sonnet-latest · winner A · 6:4 · permalink

Side A adds substantial working functionality—cookie-based web sessions, private room UI/routing, a web posting form wired to the RPC layer—which is real, lasting product surface area, despite the odd inclusion of a non-functional AI-chat-transcript file (plan2.md) as noise. Side B is a legitimate but narrow bugfix to Clojure E2E test mocks (fixing regex splits, request-body reads, and null-state encoding), valuable for test reliability but limited in scope to test infrastructure rather than the product itself.

~x-ai/grok-latest · winner A · 5:1 · permalink

A restores lasting product surface: session cookies/web login-logout, POST /post ingest, home + private room indexes, and room-scoped thread/post views with ACL checks—real multi-tenant UI wiring. B only fixes test doubles (regex split, getRequestBody, null-safe state/token, try/catch) so Clojure E2E auth runs again; valuable but narrow test-infra vs. A’s durable app behavior.

openai/gpt-chat-latest · winner A · 9:2 · permalink

Side A adds substantial, lasting application functionality: browser session cookies, login/logout flows, web posting, room-aware forum routing and authorization, reusable thread navigation, and new HTTP routes integrating the UI with existing RPC logic. Side B is a focused maintenance fix for the test infrastructure, correcting mock OAuth request parsing, redirect handling, form reading, null safety, and Playwright selectors so end-to-end auth tests work again, but it primarily improves testing rather than core product capabilities.

comparison · c_597d3f736194 (tommy-mor) vs c_477013996fa5 (tommy-mor)
~anthropic/claude-sonnet-latest · winner B · 75:25 · permalink

Side B implements a real, non-trivial feature slice (fullscreen compare layout, new vote-preview morphing with post_id lookup, ratio-based sorting of edge history, plus tests and CSS across three themes), producing lasting product functionality. Side A is a useful but narrow test-infrastructure bugfix (correct regex split, request body reading, redirect codes, exception handling in a mock server) that only fixes CI/test flakiness rather than adding product capability.

~x-ai/grok-latest · winner A · 2:1 · permalink

A fixes real crashes in the OAuth/Reddit HttpServer mocks (string vs regex split, getRequestBody, nil-safe tokens/state, 302 body length, handler try/catch) that had broken Playwright auth E2E, plus selector/wait hardening—directly restoring critical test infrastructure. B is solid product work (chromeless fullscreen layout, left-oriented edge sorting, preview morph, CSS/docs/tests) but is enhancement of one UI flow rather than unblocking core auth verification.

openai/gpt-chat-latest · winner A · 4:1 · permalink

Side A fixes concrete failures that broke end-to-end OAuth login tests by correcting mock server behavior (request body reading, redirect responses, query parsing, null-safe token parsing, exception handling) and improving test synchronization and selector handling. Side B adds a substantial UI enhancement for the vote-compare page (fullscreen layout, preview morphing, history sorting, styling, and tests), but it is primarily feature work and presentation rather than restoring core functionality that had regressed.

comparison · c_597d3f736194 (tommy-mor) vs c_57453fc5c6c0 (tommy-mor)
~anthropic/claude-sonnet-latest · winner B · 80:20 · permalink

Side B implements a complete, non-trivial feature end-to-end (new HtmlUiAction, server rendering logic, markdown formatting, integration tests, browser test, and docs) that adds real user-facing value. Side A is a set of test-infrastructure bugfixes (regex split, redirect header fix, error handling) that only restore CI/test reliability without adding product functionality, making it valuable but comparatively minor and narrowly scoped to test tooling.

~x-ai/grok-latest · winner A · 2:1 · permalink

A restores broken OAuth/Reddit HttpServer mocks with concrete correctness fixes (regex split on '=', getRequestBody, 302 content-length 0, nil-safe token/state, handler try/catch) plus auth E2E helper fixes so Playwright login works again—foundational test infrastructure. B is a solid, well-tested UX feature (CopyGardenRank + markdown formatting and UI wiring) but additive convenience rather than unblocking critical auth flows.

openai/gpt-chat-latest · winner B · 2:1 · permalink

Side B adds a substantial new user-facing capability by introducing a complete `CopyGardenRank` UI action, server handler, markdown formatting logic, rendering integration, serialization support, and integration/browser tests. Side A is a valuable maintenance fix that restores broken OAuth E2E authentication by correcting mock server behavior (query parsing, request body reading, redirects, null handling, exception handling, and test selectors), but it primarily repairs existing test infrastructure rather than extending the project's functionality.

comparison · c_597d3f736194 (tommy-mor) vs c_509fc5155034 (tommy-mor)
~anthropic/claude-sonnet-latest · winner B · 80:20 · permalink

Side B is a substantial, structural refactor introducing a generalized ItemId/tree model (path_types, reducer's GlobalTree/NodeState, journal.rs replacing settlement.rs, breadcrumb rendering, reddit.rs) that changes the core data model to support hierarchical ranking beyond just subreddits, backed by new unit/integration tests. Side A is a narrower, useful but low-risk test-infrastructure fix (correcting regex usage, HttpExchange methods, exception handling in mock OAuth server) that restores E2E test reliability but adds no new product capability.

~x-ai/grok-latest · winner B · 1:6 · permalink

B replaces flat scope/group ranking with a hierarchical ItemId/GlobalTree model, journaled votes, breadcrumbs, and URL canonicalization—core lasting product design. A only repairs test OAuth mocks (query split, request body, null-safety) and selector helpers so E2E auth runs again, valuable but confined to test plumbing.

openai/gpt-chat-latest · winner B · 4:1 · permalink

Side B introduces a substantial architectural shift from string-based scopes to hierarchical `ItemId`/`GlobalTree` state, adds persistent node registration, canonical Reddit URL parsing, breadcrumb navigation, entity support scaffolding, and rewires voting and UI around the new model. Side A is a valuable bugfix that restores OAuth end-to-end tests by fixing mock HTTP handling (`getRequestBody`, redirect responses, null checks, query parsing) and improving test selectors, but its impact is primarily limited to test infrastructure rather than the project's core design.

comparison · c_597d3f736194 (tommy-mor) vs c_f515f8a12d7a (tommy-mor)
~anthropic/claude-sonnet-latest · winner A · 6:4 · permalink

Side A fixes several real bugs (regex split instead of string split, correct getRequestBody, nil-safe state/token handling, proper error handling to prevent silent hangs) that were causing legitimate test crashes in the OAuth mock infrastructure, restoring E2E test reliability. Side B is a reasonable simplification/refactor of a UI action into inline SSR, but it's a smaller-scope cleanup with less clear bug-fixing value and removes test coverage without adding new safety guarantees.

~x-ai/grok-latest · winner A · 3:2 · permalink

A repairs concrete mock-OAuth/Reddit failures (string split on "=" vs regex, getRequestBody vs getInputStream, null-safe token/state handling, response headers, handler try/catch) that had broken Playwright auth E2E, plus selector fixes in the login helper. B is a worthwhile UX consistency cleanup (SSR #new-thread-ui-slot and delete ExpandNewThreadForm/toolbar) but removes a working indirection rather than fixing correctness or restoring critical test capability.

openai/gpt-chat-latest · winner A · 3:2 · permalink

Side A fixes concrete failures in the test infrastructure by correcting query parsing (`str/split` regex), reading POST bodies from `getRequestBody`, handling null tokens/states safely, fixing redirect responses, and wrapping the mock OAuth handler to avoid crashes, restoring end-to-end authentication tests. Side B is primarily a UI simplification that removes the `ExpandNewThreadForm` action and server-renders the existing compose slot on the home page, which reduces code but is a design cleanup rather than a broad correctness fix.

comparison · c_597d3f736194 (tommy-mor) vs c_4ed2e2cca39b (tommy-mor)
~anthropic/claude-sonnet-latest · winner B · 3:2 · permalink

Side B fixes a real production NameError in the actual application code (missing GITHUB_API_BASE_URL definition), directly preventing a crash in the OAuth callback path. Side A's changes, while more extensive, are confined to test infrastructure/mocks—valuable for test reliability but not fixing a production defect; it also introduces a subtle regression risk by using 0 instead of -1 for redirect content-length without clear justification.

~x-ai/grok-latest · winner B · 2:3 · permalink

B fixes a production NameError by defining the missing GITHUB_API_BASE_URL used in the real OAuth callback path, which directly restores live GitHub auth. A only repairs test doubles (query split regex, getRequestBody, null-safe token/state handling) and Playwright helpers so E2E mocks work again—valuable, but not user-facing runtime behavior.

openai/gpt-chat-latest · winner A · 4:1 · permalink

Side A repairs multiple concrete failures in the OAuth test infrastructure: it fixes query parsing (`str/split` regex), reads POST bodies from `getRequestBody`, guards against nil tokens and states, corrects redirect response handling, wraps mock handlers to avoid crashes, and updates Playwright helpers to read the right selectors and wait reliably. Side B is a useful but narrowly scoped fix that defines `GITHUB_API_BASE_URL` with a default to eliminate a callback `NameError`; its impact is limited compared with the broader restoration of end-to-end authentication testing in Side A.

comparison · c_597d3f736194 (tommy-mor) vs c_d6d339485601 (tommy-mor)
~anthropic/claude-sonnet-latest · winner A · 6:4 · permalink

Side A fixes real bugs in test infrastructure (regex vs string split, wrong HTTP methods on request body reading, incorrect sendResponseHeaders length, missing nil-guards causing crashes) that were actively breaking E2E auth flows, directly restoring test reliability. Side B adds a display feature exposing existing connectivity stats with new formatting logic and tests, which is useful but lower-stakes than fixing broken CI/test infra that blocks verification of core functionality.

~x-ai/grok-latest · winner A · 3:1 · permalink

A fixes real crashes in the OAuth/Reddit mock HttpServer handlers (wrong body stream, string split vs regex, null token/state, response length) and restores working Playwright E2E auth, which is lasting test infrastructure. B only formats already-available ConnectivityStats for CLI display plus unit tests on that string, a useful but thinner presentation change.

openai/gpt-chat-latest · winner A · 4:1 · permalink

Side A repairs broken end-to-end OAuth test infrastructure by fixing query parsing (`str/split` with regex), reading POST bodies correctly (`getRequestBody`), handling null tokens/states safely, correcting redirect responses, and wrapping mock handlers to avoid crashes, along with improving Playwright DOM selection and synchronization. Side B adds useful CLI visibility by formatting and displaying existing connectivity statistics with tests, but it is primarily a presentation enhancement rather than a correctness fix restoring critical test functionality.

comparison · c_597d3f736194 (tommy-mor) vs c_6a02ffb06a41 (tommy-mor)
~anthropic/claude-sonnet-latest · winner B · 6:4 · permalink

Side B fixes a real off-by-one/index-base bug (1-indexed vs 0-indexed thread_post_index) across server rpc, HTML rendering, and types, and backs it with new integration test assertions verifying correctness, giving lasting correctness value. Side A also fixes real bugs (regex split, request body vs input stream, missing try/catch, null-state handling) improving test infra robustness, which is valuable but more localized to test harness code rather than production logic.

~x-ai/grok-latest · winner A · 2:1 · permalink

A fixes multiple concrete mock-server bugs (wrong HttpExchange body stream, 302 content-length, fragile query split, null token/state) that had broken real Clojure E2E/Playwright OAuth login, plus makes alias/history reads use reliable selectors. B only tightens thread_post_index to mandatory 0-based indexing with expect and always-on links—a valid consistency fix, but narrower and less unblocking than restoring auth E2E.

openai/gpt-chat-latest · winner A · 5:1 · permalink

Side A fixes multiple concrete failures in the OAuth test infrastructure: it corrects query parsing (`str/split` with regex), reads POST bodies from `getRequestBody`, avoids null crashes when parsing bearer tokens and missing state, fixes redirect response handling, wraps handlers with error reporting, and updates Playwright helpers to use selectors reliably. Side B mainly changes rank-history indexing semantics by replacing a fallback with `expect`, updating documentation/tests, and always rendering a link, which is a narrower behavioral cleanup with less broad impact than restoring broken end-to-end authentication flows.

comparison · c_597d3f736194 (tommy-mor) vs c_ebc883667d61 (tommy-mor)
~anthropic/claude-sonnet-latest · winner B · 55:45 · permalink

Side B fixes a real build-breaking ambiguity (duplicate forum.rs vs forum/mod.rs) that would prevent the module from compiling/resolving correctly, restoring a clean modular structure already begun by prior refactors. Side A fixes several genuine but narrower test-infra bugs (regex vs string split, wrong stream method, missing null-guards, error handling in mock server) that meaningfully unblock E2E auth tests but only affect test tooling, not production code.

~x-ai/grok-latest · winner A · 3:1 · permalink

Side A makes precise, lasting bugfixes in the OAuth/Reddit mocks (regex split on "=", getRequestBody vs getInputStream, sendResponseHeaders length 0, nil-safe token parse, try/catch, and real CSS selectors in auth_login) that restore broken Clojure E2E auth flows. Side B only removes a duplicate monolithic forum.rs and re-exports already-split modules under forum/mod.rs—necessary hygiene that eliminates ambiguity but adds no new behavior beyond import tidy-ups.

openai/gpt-chat-latest · winner A · 4:1 · permalink

Side A fixes concrete regressions in the OAuth test infrastructure: it corrects query parsing (`str/split` regex), reads POST bodies from `getRequestBody`, avoids null handling crashes (`parse-token-user`, `state` encoding), fixes redirect response handling, wraps handlers with error reporting, and updates Playwright helpers to use real selectors. Side B is primarily a structural refactor that removes a duplicate `forum.rs` and reorganizes code into modules without materially changing behavior, improving maintainability but adding little new functionality.

comparison · c_597d3f736194 (tommy-mor) vs c_f10e7b043e68 (tommy-mor)
~anthropic/claude-sonnet-latest · winner A · 3:1 · permalink

Side A fixes concrete, verifiable bugs (regex split arg, wrong stream for reading POST body, wrong sendResponseHeaders length, missing null-check on token/state, added error handling) that directly restore broken E2E auth tests, with a clear commit message explaining the fix. Side B is a vague 'url stuff' commit that deletes a working engine.rs and its test suite while referencing new graph.rs/parse.rs modules that aren't shown in the diff, leaving the actual replacement logic and whether functionality/tests were preserved unverifiable from the patch itself.

~x-ai/grok-latest · winner B · 2:5 · permalink

B replaces the ad-hoc ParsedUrl combinator stack (engine.rs + per-host normalize_* in registry) with a lasting semantic-graph design for ItemId canonicalization and breadcrumbs—core production identity logic—while A only repairs test doubles (regex split on '=', getRequestBody, 302 length, nil token/state) and Playwright helpers so E2E auth runs again. Test mock fixes are real and necessary, but they do not outlast B’s redesign of the URL rules subsystem.

openai/gpt-chat-latest · winner A · 5:1 · permalink

Side A fixes concrete regressions in the OAuth test infrastructure by correcting query parsing (`str/split` regex), reading POST bodies from `getRequestBody`, handling null tokens/state safely, fixing redirect responses, wrapping handlers to avoid crashes, and updating Playwright test interactions to use real selectors. Side B mostly restructures the URL canonicalization module by replacing the old engine with new graph/parse modules and updating documentation, but the patch shown primarily removes code and redirects APIs without demonstrating the substantive replacement implementation.

comparison · c_597d3f736194 (tommy-mor) vs c_ca72f0995396 (tommy-mor)
~anthropic/claude-sonnet-latest · winner A · 6:4 · permalink

Side A fixes real bugs that were breaking E2E auth tests (wrong str/split arg types, incorrect InputStream/RequestBody API usage, nil state handling, missing error handling causing crashes), restoring test suite functionality. Side B is a UI refactor consolidating multiple cli_panel calls into one, which is a reasonable improvement but is feature polish rather than a correctness fix, and introduces a slightly awkward assert-based safety check instead of proper escaping.

~x-ai/grok-latest · winner A · 3:1 · permalink

A restores broken E2E auth by fixing real mock failures (str/split on "=" vs #"=", slurp of getRequestBody vs getInputStream, 302 body length, nil-safe token/state, handler try/catch) plus selector/async test reads. B only regroups the cosmetic cli_panel UI (multi-cmd, row click-to-copy, CSS, JS-quote asserts)—nice polish, not unblocking core test/infra correctness.

openai/gpt-chat-latest · winner A · 5:2 · permalink

Side A fixes concrete failures in the OAuth end-to-end test infrastructure by correcting query parsing (`str/split` with regex), reading POST bodies from `getRequestBody`, handling null tokens/states safely, adjusting redirects, wrapping mock handlers with error handling, and improving Playwright DOM polling so authentication flows work again. Side B is primarily a UI enhancement that refactors `cli_panel` to support grouped clickable commands with styling and adds assertions for JS-safe command strings, which is useful but less foundational than restoring broken authentication tests.

comparison · c_597d3f736194 (tommy-mor) vs c_6f04dcb2e38c (tommy-mor)
~anthropic/claude-sonnet-latest · winner B · 65:35 · permalink

Side B removes a substantial legacy code path (dual GitDiscovery/Evidence projection logic across epoch/commit views), simplifying the data model to a single canonical evidence-envelope source of truth, with corresponding test updates reflecting the new invariant. Side A is a valuable but narrower bugfix (regex vs string split, request body stream fix, defensive nils, error handling) that restores test infrastructure correctness but doesn't change production architecture or reduce long-term maintenance burden as much.

~x-ai/grok-latest · winner B · 2:5 · permalink

B removes dual-path legacy GitDiscovery projection helpers and epoch/commit page fallbacks, making Emission fields required and forcing Evidence-envelope-only reads—a lasting schema cleanup that shrinks core surface area. A only patches test mocks (query split regex, getRequestBody, nil-safe token/state handling) plus minor Playwright selector tweaks so E2E auth runs again, which is useful but confined to test support.

openai/gpt-chat-latest · winner B · 4:3 · permalink

Side B removes the legacy GitDiscovery projection path and makes the evidence model authoritative by requiring emission metadata fields, deleting fallback lookup code, and updating epoch/commit pages to rely only on Evidence events. Although it is a larger schema and UI cleanup that requires test updates, it simplifies long-term maintenance by eliminating dual code paths, whereas Side A primarily repairs OAuth test infrastructure with targeted fixes such as request parsing, redirect handling, null checks, and Playwright selector updates.

comparison · c_3ff71f7eaeda (tommy-mor) vs c_597d3f736194 (tommy-mor)
~anthropic/claude-sonnet-latest · winner B · 6:4 · permalink

Side B fixes genuine crashing bugs in test infrastructure: `str/split` called with a plain string instead of a regex (throws ClassCastException), and `.getInputStream`/`-1` misuse on HttpExchange (wrong API, breaks POST body reads), plus nil-safety for token/state — these were actually breaking the OAuth E2E flow entirely. Side A is mostly UI polish (vote-count badges, HUD unpin button) with reasonable but lower-stakes value, since it doesn't fix a broken core mechanism but refines an already-working feature.

~x-ai/grok-latest · winner A · 2:1 · permalink

A adds lasting product behavior: pairwise edge vote counts in the garden UI (with a real helper + unit test), HUD unpin via POST clear instead of a misleading item link, and browser coverage for that flow. B is valuable but narrower—surgical correctness fixes in OAuth/Reddit test mocks (split/API/null/state) that restore E2E auth; important infrastructure, less enduring app design than A.

openai/gpt-chat-latest · winner B · 3:2 · permalink

Side B repairs broken OAuth test infrastructure by fixing query parsing (`str/split` regex), reading POST bodies from `getRequestBody`, handling missing state/token values safely, correcting redirect responses, and wrapping mock handlers to avoid crashes, directly restoring end-to-end authentication flows. Side A adds useful UI enhancements (pairwise vote counts, HUD unpin button, styling, and tests), but these are primarily feature and UX improvements rather than restoring critical project functionality.

The full patch is loaded only by the download route: download patch

Metadata
commit_idc_597d3f736194d847e44e858956e9b0535a2ae8cb4e22eefdc1112be63c4b55eb
patch_sha2564ac8d50d3c0c63e01c911d09aeb81e1b2922b6391e7f696504105b24263e24fb
patch_identitygit-patch-id-stable-v1:d052dfc0c44571eecfc69f4e205cb94491f8218d
committer_timestamp_ms1783905773000