constitution · epochs · watch · epoch 3

commit

c_e57094c6229acb4c04

tommy-mor · sha1:40b975bfd17281bad1fd062727b1f4c7e816544f

download patch · raw event

message

nice

comparisons involving this commit

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

Both are substantial, but B fixes a real correctness/design issue (persisting full Reddit API payloads via the event log for replay instead of only a derived view, removing implicit auto-fetch on navigation, adding configurable API bases and dotenv support) plus includes an integration test with a mock server and fixtures. A adds a reasonable new `/ui` dispatch abstraction and form-template mechanism, but it's mostly plumbing/refactor without new tested behavior or bugfixes, and its own tests are limited to unit-level template parsing rather than end-to-end verification.

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

B delivers lasting domain design: event-sourced EntityImported with full JSON payloads, raw+derived entity state, explicit user fetch (removing auto-fetch on browse), configurable API bases, and a mock integration test. A is solid UI plumbing (form_template holes, POST /ui mux, shared run_* web_post helpers, expand-new-thread morphs) but is mostly endpoint consolidation and progressive form disclosure versus B’s data-model and fetch correctness changes.

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

Side B introduces a durable architectural improvement by persisting full imported Reddit payloads as a new `EntityImported` event, replaying them into state, separating raw payloads from derived views, and replacing automatic fetches with explicit user-triggered imports. Side A adds a substantial new `/ui` endpoint with JSON-template form handling and refactors web-post logic for reuse, but much of its change is plumbing for browser UI dispatch, whereas Side B extends the project's persistence model, replay behavior, and import workflow with accompanying tests.

comparison · c_e57094c6229a (tommy-mor) vs c_b8e80699547c (tommy-mor)
~anthropic/claude-sonnet-latest · winner A · 8:2 · permalink

Side A is an integrated, working change: it wires an explicit user-triggered fetch action through events, reducer, HTML UI, event-log replay, and tests (including a fixture and integration test), fitting the existing architecture. Side B adds a standalone, unintegrated `reddit.rs` file (not even placed in server/src or referenced by any module) using different dependencies (governor, anyhow) never added to Cargo.toml, making it dead, disconnected code with no real integration or lasting value.

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

Commit A delivers an integrated, event-sourced Reddit import path (EntityImported + full payload storage/replay, explicit UI fetch control, configurable API bases, force-bypass cache, fixtures + end-to-end mock test) that replaces auto-fetch on browse and wires into the reducer/state/HTML layers. Commit B only drops an unintegrated standalone reddit.rs client with rate-limiter wrappers and Serde types, adding no wiring, persistence, or UI value to the project.

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

Side A integrates Reddit entity import into the existing application: it replaces implicit fetches with an explicit UI action, persists full API payloads via a new EntityImported event, replays them into state, adds configuration and dotenv support, and includes unit and integration tests. Side B is largely a standalone Reddit client module with typed models and rate limiting, but it is not connected to the rest of the project in the patch, so its lasting project impact is much lower despite its size.

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

Side B is a real, working feature: it introduces explicit user-initiated Reddit fetch (removing implicit auto-fetch), persists full API payloads via a new EntityImported event with replay support, adds config for API bases/env-based creds, UI wiring, tests (unit + integration), and a fixture. Side A is purely a planning document plus a thin RouteContext wrapper that isn't yet adopted anywhere, offering no functional change or bugfix—mostly aspirational scaffolding.

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

B ships a durable entity-import path (EntityImported events, raw payload + derived view, explicit FetchEntity UI, configurable Reddit broker, replay/tests/fixtures), while A mainly adds a forward-looking plan.md and a thin RouteContext newtype that still delegates to CanonicalItemUrl/ThreadNav without finishing the migration.

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

Side B implements substantial new functionality: it replaces automatic Reddit fetches with explicit user-triggered imports, persists full upstream payloads via a new `EntityImported` event for replay, updates the reducer to store raw payloads plus derived views, and adds configuration, tests, and UI support for the workflow. Side A mainly adds a detailed planning document and introduces a thin `RouteContext` wrapper re-exported from the HTML module, which is useful for future work but does not materially change project behavior yet.

comparison · c_4ed2e2cca39b (tommy-mor) vs c_e57094c6229a (tommy-mor)
~anthropic/claude-sonnet-latest · winner B · 9:1 · permalink

Side B is a substantial, coherent feature: it converts Reddit fetching into an event-sourced, user-initiated import (storing raw payloads, deriving views at replay, explicit 'Fetch more' UI), adds dotenv support, config for API bases, and includes new tests and fixtures validating the behavior end-to-end. Side A is a trivial one-line env var addition to fix a NameError, useful but minor in scope and impact compared to B's architectural and functional improvements.

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

A only adds a missing GITHUB_API_BASE_URL env default (a minimal NameError fix). B redesigns Reddit import around persisted EntityImported events with full payloads, explicit user-triggered fetch UI, configurable API bases, dotenv support, reducer/state replay, fixtures, and end-to-end tests—delivering lasting architecture and behavior rather than a one-line config patch.

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

Side B implements substantial new functionality: it replaces automatic Reddit fetching with explicit user-triggered fetches, persists full imported API payloads via a new EntityImported event for replay, refactors the reducer to store raw payloads plus derived views, adds configurable API/OAuth bases and dotenv loading, and includes tests and fixtures validating the behavior. Side A is a small but useful bug fix that defines GITHUB_API_BASE_URL with a default to prevent a NameError, but its scope and lasting architectural impact are much narrower.

comparison · c_cf0a514b261a (tommy-mor) vs c_e57094c6229a (tommy-mor)
~anthropic/claude-sonnet-latest · winner B · 9:1 · permalink

Side B introduces a substantial, working feature: explicit user-initiated entity fetching (vs auto-fetch on browse), full raw payload persistence via a new EntityImported event, dotenv support, config-driven Reddit API base URLs for testability, UI controls, CSS, and an integration test with a mock Reddit server plus fixtures. Side A is a minor, low-risk cleanup removing dead code with a corresponding test update, which is fine but has far less lasting architectural impact than B's design change (raw payload storage/replay, decoupled fetch triggering, and testable API config).

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

Side B lands a durable architectural feature: user-initiated entity import with full payloads in the event log (EntityImported), replay via apply_entity_import, configurable Reddit API bases, and an explicit Fetch UI plus integration coverage. Side A only deletes a dead zero-ratio guard in apply_vote and tweaks one unit test—correct cleanup, but negligible lasting design impact beside B.

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

Side B introduces substantial new functionality and architecture: explicit user-triggered Reddit entity fetching, persistent `EntityImported` events with replay support, storage of raw API payloads plus derived views, configurable API endpoints, and associated UI, tests, and fixtures. Side A only removes a now-redundant zero-ratio guard in `apply_vote` and updates a test to reflect that zero-weight edges are skipped while items are still registered, which is a small cleanup compared with B's lasting feature additions.

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

Side B implements a substantive feature (explicit user-triggered Reddit entity fetch, event-sourced raw payload storage, replay support, config injection for testability, and an integration test with a mock server), representing real architectural and functional progress. Side A is a small correctness cleanup (replacing a silent default with an explicit expect and dropping a conditional link check) plus doc-comment fixes, useful but far more limited in scope and lasting impact.

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

B redesigns Reddit import around durable EntityImported events (full payload + derived view), explicit user fetch UI, configurable API bases, and a mock end-to-end test—lasting architecture. A only realigns rank-history thread_post_index to strict 0-based paths (expect instead of unwrap_or) with small test/doc tweaks, valuable but narrow.

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

Side B introduces substantial new functionality and architecture: explicit user-triggered Reddit entity fetching, persistent `EntityImported` events with replay support, storage of raw API payloads plus derived views, configurable API endpoints, dotenv loading, and accompanying UI, tests, and fixtures. Side A is a focused correctness fix that makes `thread_post_index` consistently 0-based by replacing a silent fallback with `expect`, updating documentation, always rendering the link, and adding integration tests, but its scope and lasting impact are much smaller.

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

Side B delivers a substantial, coherent feature: it converts entity fetch from an implicit auto-fetch to an explicit user-initiated, event-sourced import (EntityImported event, replay support, configurable API base for testing, dotenv support), plus real tests and an integration test harness with fixtures. Side A is a smaller refactor (Deque->Vec/List) that removes an eager trim optimization in favor of a query-time cap, which is reasonable but much lower impact and scope than B's architectural and testability improvements.

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

B adds durable EntityImported events, stores full API payloads for replay, switches Reddit loading to explicit user fetch with real integration coverage, and rewires the broker/UI around that model—lasting product and architecture value. A is a sound but narrower storage simplification (Deque→List/Vec, trim-on-write → cap-on-read) without comparable feature or durability impact.

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

Side B introduces a substantive new architecture for importing and persisting external entity data: it adds an `EntityImported` event, stores full API payloads for replay, refactors Reddit fetching to append events instead of mutating state directly, adds explicit user-triggered fetch UI, and includes replay and integration tests. Side A mainly replaces a durable deque with an append-only list, removes write-time trimming in favor of query-time capping, updates the reducer to use `Vec`, and adds a focused test; while useful, it is a narrower storage optimization compared with B's end-to-end feature and persistence design.

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

Commit B is a substantial, coherent feature/refactor: it introduces explicit user-triggered entity fetching, persists full raw API payloads via a new EntityImported event for proper replay, decouples Reddit API base URLs for testability, adds dotenv support, and includes a real integration test with a mock Reddit server plus fixture data. Commit A is a small, well-tested but narrow bugfix (skipping pinned posts) that adds real value but is far more limited in scope and lasting architectural impact compared to B's persistence/import redesign.

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

B redesigns Reddit import around event-sourced EntityImported payloads, explicit user fetch (no auto-fetch on browse), configurable API bases, raw+view storage, and end-to-end tests—foundational lasting architecture. A only adds a small stickied/pinned skip in parse_children plus one unit test, a correct but narrow data-quality tweak.

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

Side B introduces substantial new architecture: it replaces ephemeral Reddit entity updates with persisted `EntityImported` events, stores raw API payloads plus derived views, adds replay support, configurable API/OAuth endpoints, and an explicit user-triggered fetch flow with tests. Side A is a focused correctness fix that skips stickied/pinned subreddit posts during import and adds a targeted regression test, but its scope and long-term impact are much smaller than the persistence and fetch redesign in Side B.

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

Side B refactors Reddit fetching into an event-sourced, explicit user-initiated import (storing raw payloads, replaying on startup, testable config, integration test with mock server), which is a substantial architectural improvement with real bugfix implications (no more implicit auto-fetch on navigate). Side A adds a useful but narrower feature (pool-scoped voting) with good test coverage but smaller overall project impact compared to B's persistence/replay correctness fix.

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

B redesigns entity import around durable Event::EntityImported payloads, explicit user-triggered fetch (no auto-fetch on browse), replay into entity_raw/view, and a real mock-API integration test—foundational persistence and control-flow fixes. A is a solid product feature (pool query param, constrained next-pair navigation, vote-on-children link) but stays within the existing vote UI path and does not change core data architecture.

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

Side B introduces a substantial architectural improvement by replacing transient Reddit entity fetching with explicit user-triggered imports, persisting full API payloads via a new EntityImported event, replaying them during state reconstruction, and adding tests around replay and mock API integration. Side A adds a useful pool-scoped voting workflow (optional pool parameter, child voting entry point, and preserved navigation context), but its impact is confined to the voting UI and navigation, whereas Side B establishes longer-lived persistence and import infrastructure that affects core data handling.

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

Side A introduces a substantial, well-architected feature (explicit user-triggered Reddit entity import) with proper event-sourcing (raw payload persisted, view derived at replay time), config injection for testability (RedditApiConfig, oauth/api base overrides), and both Rust unit tests plus an end-to-end Babashka integration test with a real fixture. Side B is a smaller set of genuine but narrower bugfixes (out-of-band attribution, removing a bad fallback, dropping a pointless button, and a route rename) that are correct and useful but lower in architectural weight and reach than A's feature work.

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

A lands a lasting architecture change: event-sourced EntityImported payloads, raw+view entity storage, explicit fetch UI instead of auto-fetch on browse, configurable Reddit API/OAuth bases, and a full mock integration test. B is real but narrower—delegate attribution out-of-band, stopping wrong all-items fallback, dropping swap, and renaming /vote/compare→/vote—valuable correctness polish without comparable system impact.

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

Side A introduces substantial new functionality and architecture: explicit user-triggered Reddit entity fetching, persistence of full API payloads via a new `EntityImported` event, replay support, configurable API/OAuth handling, dotenv loading, and tests covering import/replay behavior. Side B mainly fixes and simplifies the voting UI by correcting delegate attribution, preventing an incorrect fallback when too few sibling items exist, removing the swap button, and renaming `/vote/compare` to `/vote`, which are useful but much narrower in long-term impact.

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

Side A adds a genuinely new, well-tested ranking algorithm (pair.rs's bridge-aware next-pair selection with component detection) plus a real bugfix in ItemId normalization (from_storage) that fixes vote/id mismatches from Reddit title slugs, along with an in-place morph-based vote-compare UI backed by integration tests. Side B's changes (explicit fetch button, raw-payload event storage, dotenv, configurable Reddit API base) are solid plumbing/UX improvements but are more incremental infrastructure rather than a core algorithmic/product feature.

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

A lands the project’s core ranking product: a full /vote compare UI plus pair.rs with bridge/within-component pair prioritization, in-place vote morphing, and targeted integration/E2E coverage. B is still lasting (EntityImported + raw payload persistence, explicit fetch, configurable Reddit API), but it is mostly import/plumbing versus A’s domain algorithm and primary UX.

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

Side A delivers a substantial new pairwise voting workflow: it adds a dedicated `/vote` page, bridge-aware pair selection (`suggest_next_pair_in_pool`), in-place UI morphing after votes, ID normalization via `ItemId::from_storage`, and accompanying unit/integration tests. Side B introduces useful infrastructure for explicit Reddit fetching and persistent raw entity imports, but much of the patch is architectural refactoring around fetch/storage; A's changes more directly add enduring application behavior and fix identifier consistency across voting and imports.

comparison · c_8dc1a8119370 (tommy-mor) vs c_e57094c6229a (tommy-mor)
~anthropic/claude-sonnet-latest · winner B · 60:40 · permalink

Side A simplifies a genuinely broken, overcomplicated autocomplete parser into a plain paste-and-go form, which is a sound simplification but mostly deletes speculative complexity. Side B adds substantive new functionality (explicit user-initiated Reddit fetch, persisting full API payloads via an event-sourced EntityImported event, replay support, env-based config with dotenv, and a fixture-backed integration test), representing more durable architectural and feature value despite the vague commit message.

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

B adds lasting product capability: explicit FetchEntity UI, EntityImported event-log replay with full JSON payloads, configurable Reddit API bases/OAuth, and an end-to-end mock import test—core persistence and import design. A correctly deletes an unreliable ~2k-line keystroke graph for a simple paste-and-go parser, which is valuable cleanup, but mainly reduces complexity rather than extending durable domain behavior.

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

Side B adds durable infrastructure: explicit user-triggered entity fetching, event-sourced persistence of full imported API payloads (`EntityImported`), replay support, configurable Reddit API/OAuth endpoints, and UI/server plumbing for fetch actions with tests. Side A mainly removes a complex autocomplete system in favor of a simpler paste-and-go flow and URL parser, which simplifies the codebase but also drops significant functionality rather than adding comparable long-term capability.

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

Side B introduces a real architectural improvement: raw entity payloads are now persisted through the event log (EntityImported event) and replayed on startup, fetches become explicit user actions instead of implicit auto-fetch, and it adds config (dotenv, configurable API/OAuth bases) plus tests and fixtures validating replay/import correctness. Side A is a broad but mostly mechanical refactor (threading theme/jar/uri params through many handlers, room-prefixed URL helpers) which is useful but lower-risk plumbing with less architectural novelty, though it does add solid test coverage for URL prefixing.

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

B lands a durable domain design: EntityImported in the event log with raw payload + derived view, explicit user-driven fetch (no auto-fetch on browse), configurable API bases, replay, and an end-to-end mock integration test. A’s room-aware wire URLs (item_path_for_api_in_room / forum_thread_web_url) are real API correctness, but much of the diff is theme plumbing (cookie/layout/handler threading) that is less foundational than B’s import architecture.

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

Side A implements two broadly useful, user-facing capabilities across the codebase: persistent theme selection via validated cookies and a dedicated /theme endpoint (including preserving the theme across login redirects), plus correct room-aware URL generation for RPC/API responses with new helper functions and tests. Side B adds explicit Reddit entity fetching with event-log persistence of raw payloads and replay support, which is substantial, but it is more specialized; Side A's changes affect core navigation, authentication, rendering, and link correctness throughout the application.

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

B undertakes a substantive architectural fix: it separates the previously conflated 'thread_id' (used both as a permission boundary and forum channel) into distinct room_id/thread_tag concepts, replaces scattered REST endpoints with a unified RPC batch API, and updates all tests/CLI/integration scripts to match the new model coherently. A is a smaller, well-tested feature (explicit Reddit fetch-on-demand plus event-sourced entity import) but touches a narrower surface than B's system-wide correctness improvement, even though B's commit message signals it's a rougher first pass.

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

B re-architects the core product around room-scoped content (ThreadCreated→RoomCreated, Ingest room_id/thread_tag, ScopeId::Room, forum vs room indexes) and replaces scattered REST handlers with a batch RPC surface plus CLI public/private routing—foundational, test-backed design. A is a solid but narrower feature: explicit Reddit entity fetch, Event::EntityImported with raw payload replay, and UI/fetch controls; valuable, yet not project-defining like B's API/reducer model change.

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

Side A adds a coherent, lasting feature: explicit user-triggered Reddit entity fetching, persists full imported API payloads via a new `EntityImported` event, replays them into state, stores raw payloads alongside derived views, and adds tests plus configurable API/dotenv support. Side B is a large architectural migration from many REST endpoints to a batch RPC API with room/thread refactoring, but much of the patch is mechanical endpoint replacement and file movement, making its lasting substance less concentrated than A's end-to-end persistence and import design.

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

B adds a genuine feature (explicit 'fetch from Reddit' action replacing implicit auto-fetch), refactors reddit.rs to persist the full raw payload and derive views from it (supporting event replay and future domains), adds config flexibility (dotenv, configurable API base) and includes fixture-backed unit and integration tests. A mainly deletes dead demo-counter scaffolding and introduces a settlement worker/caching layer for ranking, which is a reasonable perf improvement but narrower in scope and less tested than B's addition.

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

A introduces a lasting settlement worker that batches votes, persists them, and refreshes ranking scores off the request path, plus a cached read-only ranking fast path—core correctness for the pairwise product—while also deleting the throwaway demo counter. B’s explicit fetch UI, EntityImported full-payload replay, and mockable Reddit config are valuable domain work, but more peripheral polish than A’s ranking/write-path architecture.

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

Side A introduces a substantial architectural improvement by moving vote settlement into a dedicated asynchronous worker, precomputing and caching ranking scores, switching ranking reads to shared locks, and removing an obsolete demo counter feature. This reduces request-path work and cleanly separates persistence, score computation, and rendering, whereas Side B mainly adds Reddit entity import, explicit fetch UI, payload persistence, and configuration support, which is useful but more feature-specific and less foundational to the project's core behavior.

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

Side B is a focused, well-tested algorithmic improvement to pair selection with clear tie-break logic and multiple new unit tests validating the new behavior, entirely within the core ranking domain. Side A is a large sprawling feature (Reddit entity import refactor) that touches many files, adds env-var complexity and a bash/clojure integration test, but is noisier and less self-contained, making its lasting design value harder to assess despite covering more surface area.

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

A lands lasting architecture: full Reddit payloads as EntityImported events with entity_raw + derived views, explicit fetch UI (no auto-fetch on browse), configurable API bases, and an end-to-end mock import test. B improves pair selection (attach isolates before isolate–isolate, then zip adjacent ranks) with solid unit tests, but it refines one ranking heuristic rather than the data/import model.

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

Side A introduces substantial new functionality and architectural improvements: it replaces automatic Reddit fetching with explicit user-triggered imports, persists full upstream payloads as replayable EntityImported events, stores raw entity data alongside derived views, adds configurable API/OAuth endpoints, dotenv loading, and corresponding integration/tests. Side B meaningfully improves the vote-pair selection heuristic by prioritizing component attachment and adjacent-rank refinement with good test coverage, but its impact is limited to algorithmic scheduling within an existing feature rather than adding durable infrastructure and persistence capabilities.

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

Side A introduces a real, self-contained feature (explicit Reddit entity import with event-sourced raw payload storage, configurable API base for testing, dotenv support, and new tests/fixtures), adding lasting architectural capability. Side B is a large but mechanical DSL syntax migration (trailing to leading explanation blocks) touching many files/tests with churn but no new functional capability, and its value is more about internal consistency than new lasting design.

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

A adds a durable subsystem: explicit FetchEntity UI, EntityImported event-log persistence of full payloads, tree replay via apply_entity_raw, configurable Reddit API/OAuth bases, and a mock end-to-end import test—lasting product architecture beyond dependency noise. B’s explanation-first vote grammar is a real design change in dsl.rs, but most of the patch is cascading fixture/doc/test rewrites of the same reorder, so the lasting delta is narrower than A’s feature work.

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

Side A adds substantial new functionality: explicit user-triggered Reddit entity fetching, persistent `EntityImported` events with replay support, storage of raw API payloads plus derived views, configurable API/OAuth endpoints, dotenv loading, and integration/UI tests. Side B primarily changes the DSL syntax from trailing to leading vote explanations, updating the parser, documentation, UI formatting, and a large number of fixtures/tests to match; while cohesive, it is largely a syntax migration rather than adding comparable long-term capability.

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

Side B is a focused, real bugfix: it fixes production 403 blocks by making OAuth mandatory when creds exist, adds a token-refresh-and-retry path on 401/403, improves error messages, and pins a config value in fly.toml—directly addressing a deployment-breaking issue. Side A is a larger feature/refactor (raw entity import, explicit fetch UI, dotenv) that is useful but more diffuse, mixes unrelated concerns (UI, config loading, event schema), and includes a bespoke Clojure integration test that adds maintenance surface without clear necessity.

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

A adds lasting architecture: event-sourced EntityImported with full payload storage, explicit user-driven fetch UX (replacing auto-fetch on browse), configurable API bases, and a real mock-backed integration test. B is a focused, correct production fix (mandatory OAuth when creds exist, 401/403 refresh, fly.toml base URL) but much narrower in scope and impact on the codebase.

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

Side A introduces substantial new functionality and architecture: explicit user-triggered Reddit fetching, persistent `EntityImported` events with raw payload storage and replay, derived entity views, configurable API bases, UI controls, dotenv loading, and tests covering replay and end-to-end import. Side B is a valuable reliability fix that requires OAuth when credentials exist, retries after 401/403 with token refresh, and improves error handling for blocked responses, but it is a focused robustness improvement built on top of existing behavior rather than a broader lasting capability.

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

Side A delivers a focused, coherent security hardening pass: fail-closed vote authorization (no more silent anon fallback), gating mock OAuth behind an explicit env flag, Secure cookie support, stricter open-redirect sanitization, and nav UI updates, all backed by new unit tests. Side B, despite more lines, is a mixed grab-bag (dotenv loading, Reddit fetch refactor to explicit user action, raw payload persistence) with a vague commit message ('nice') and less clearly tied-together rationale, making Side A's security-focused, testable, necessary change more valuable for ownership purposes.

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

B redesigns core data flow: user-initiated fetch_entity, full EntityImported payloads in the event log, entity_raw on nodes with replay, and configurable API bases plus an end-to-end mock test—durable product architecture. A’s fail-closed votes, Secure cookies, mock-OAuth gate, and open-redirect tightening are real security fixes but narrower hardening of existing auth/UI rather than a foundational capability change.

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

Side A closes a significant security gap by changing vote identity resolution from anonymous fallback to fail-closed authenticated sessions, adds Secure cookie handling based on HTTPS, tightens return URL sanitization against open redirects, and gates mock OAuth behind an explicit test-only environment variable, with accompanying tests. Side B introduces a useful explicit Reddit import flow with event-sourced payload persistence and configurable API endpoints, but much of the patch is feature expansion rather than fixing correctness or security, making A's changes more durable to the project's integrity.

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

Side A fixes a real design flaw in B's auto-fetch-on-browse behavior by making imports explicit user actions, persists the full API payload through the event log for correct replay/audit (via a new EntityImported event and apply_entity_raw), and adds solid regression tests (replay test, fixture-based Reddit test, and an end-to-end mock-API integration test). Side B is the initial (and reasonable) implementation of the Reddit worker/broker, but it auto-fetches on every browse without persisting raw payloads, which A explicitly corrects and extends with more durable, testable design.

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

A turns B’s in-memory-only auto-fetch into a durable design: EntityImported events store full API payloads, replay restores entity_raw + derived views, and fetch is an explicit UI action with configurable API bases. B still matters as the first real RedditBroker (OAuth, rate limits, URL mapping, parsers), but much of that surface is reshaped by A, and A adds the fixture plus end-to-end mock import test that locks the behavior in.

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

Side A substantially evolves the Reddit import design by replacing automatic fetch-on-browse with an explicit user-triggered fetch UI, persisting full API payloads as `EntityImported` events, replaying them into state, adding configurable API endpoints, dotenv support, and tests for replay and end-to-end import. Side B mainly introduces the initial background Reddit fetch worker and automatic fetching on browse, but lacks the event-sourced persistence, explicit fetch workflow, configurability, and broader architectural improvements that make Side A's changes more durable.

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

Side A fixes a real, scoped security bug (XSS via unsanitized Reddit HTML) with a small, well-tested, focused change (sanitize.rs + two call sites + unit tests). Side B is a large, unfocused grab-bag (dotenv loading, explicit fetch UI, event-log payload storage/replay, reddit config refactor, integration test harness) that adds significant surface area and complexity without a single clear, well-isolated purpose, making it harder to review and more risky despite adding some legitimate architecture (raw payload persistence, explicit fetch).

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

B lands lasting architecture: explicit user-initiated fetch, full API payloads in EntityImported/event-log replay, entity_raw + derived views, configurable Reddit bases, and a mock-backed integration test. A is a correct, focused XSS fix (ammonia at PreEscaped render sites with unit tests) but is shorter-scope hardening on top of entity HTML, not a comparable product/design step.

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

Side A fixes a concrete security issue by sanitizing untrusted Reddit `body_html` with the `ammonia` library before every `maud::PreEscaped` render, adds a dedicated sanitization module, and includes tests verifying scripts and event handlers are stripped while benign markup is preserved. Side B introduces a broad Reddit import/event-log refactor, explicit fetch UI, dotenv support, and related plumbing, but it is a much larger architectural change whose core value is feature expansion rather than addressing an immediate correctness or security problem.

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

B is a small, precise, correct bugfix (moving the zero-ratio guard before side effects) with a clear regression test proving the fix, directly preventing ghost items and incorrect voted_pairs state. A is a much larger feature addition (entity import/fetch UI, dotenv, reddit API refactor) that adds real value but is diffuse, includes a stray unrelated Clojure integration test file, and carries more risk/noise without the same tight correctness guarantee.

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

A redesigns Reddit/entity import into an event-sourced pipeline (EntityImported + raw payload storage, explicit fetch UI, no auto-fetch on browse, configurable API bases, fixtures and end-to-end test), which is lasting product and architecture value. B is a real but narrow correctness fix—moving the zero-ratio early-return before ensure_item/voted_pairs—so it stops ghost items and bad pair state without comparable scope.

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

Side A implements a substantial architectural improvement: it replaces implicit Reddit fetches with explicit user-triggered imports, persists full upstream payloads via a new EntityImported event, replays them into state, adds configurable API/OAuth endpoints and dotenv loading, and includes integration/tests around the new behavior. Side B fixes a real reducer bug by moving the zero-ratio guard ahead of item/pair registration to prevent ghost entries and incorrect voted_pairs state, but it is a narrowly scoped correctness fix compared with A's broader lasting functionality.

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

Side A delivers a substantial, coherent feature: it moves entity fetching from implicit auto-fetch to explicit user-initiated fetch, persists the raw API payload as an event (EntityImported) for proper replay/audit, decouples Reddit API base URLs for testability, and adds fixtures plus an integration test proving end-to-end behavior—real architectural and correctness improvements. Side B is a smaller, well-scoped bugfix enforcing ratio bounds (1-100) with matching parser/reducer/handler changes and tests, which is valuable but narrower in scope and impact than A's persistence/event-sourcing and fetch-control redesign.

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

A redesigns Reddit/entity import into a durable path: full payloads via EntityImported events, replay into entity_raw + derived views, explicit user-driven fetch UI, configurable API bases, and an end-to-end mock integration test—core lasting architecture. B correctly hardens vote ratios (≥1, ≤100) across DSL, UI, and reducer with solid tests, but it is a narrow constraint fix versus A’s broader durable design change.

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

Side A introduces a durable architectural improvement: it replaces automatic Reddit fetches with an explicit user-triggered fetch flow, persists full imported API payloads as `EntityImported` events for replay, stores raw entity data alongside derived views, adds configurable API endpoints, and includes replay/integration tests. Side B is a solid correctness fix that consistently enforces valid vote ratios (1–100) across the parser, UI handler, reducer, and tests, but its scope is limited to input validation and guarding invalid graph edges.

comparison · c_25172cf8caa0 (tommy-mor) vs c_e57094c6229a (tommy-mor)
~anthropic/claude-sonnet-latest · winner A · 7:3 · permalink

Side A fixes a concrete, real multi-user bug (shared sentinel delegate blocking subsequent human voters), threading an Option<String> change through types/server/tests with a targeted regression test proving the fix. Side B ('nice') is a larger feature addition (Reddit entity import as explicit user action, dotenv support) that is plausible and tested but less clearly a necessary fix and includes more speculative/broad refactoring (event schema changes, new config plumbing) with higher risk of churn for uncertain payoff.

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

A fixes a real multi-user correctness bug by removing shared browser sentinel delegates (WEB_BROWSER_AGENT/INVITE_BROWSER_AGENT), making PendingSession.agent Option, posting UI votes with no delegate, and proving two humans can vote without AgentBound—lasting auth/authorship model cleanup with targeted tests. B is a larger Reddit import redesign (EntityImported payloads, explicit fetch UI, config/dotenv) with real value, but more feature surface than the critical shared-delegate voting failure A resolves.

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

Side A fixes a concrete correctness issue by replacing shared browser sentinel delegates with `None` for web sessions, updating pending-session types to `Option<String>`, and adjusting attribution logic so browser users no longer collide on a shared delegate. It also adds an integration test proving two different browser users can both vote successfully without creating `AgentBound` entries, whereas Side B is a broader feature addition (manual Reddit fetching, persisted entity imports, dotenv support) whose value is less directly tied to fixing an existing correctness problem.

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

Metadata
commit_idc_e57094c6229acb4c04ea060ec41261a0cf1a4cd9d9ee467ff260cc3591479cc2
patch_sha256d8ea88c4754a22ee5ce8f3d41f3ec590e1d4a110e822392a94a407823fea1eb7
patch_identitygit-patch-id-stable-v1:92ad349762f3f446e560734876c86cca3e245286
committer_timestamp_ms1780126803000