constitution · epochs · watch · epoch 3

commit

c_2595b600762465babc

tommy-mor · sha1:96b6da05f8e6b13987fa99f57474f9ae76fe5d1d

download patch · raw event

message

rpc + reducer changes first pass

comparisons involving this commit

comparison · c_7fc30b2498be (tommy-mor) vs c_2595b6007624 (tommy-mor)
~anthropic/claude-sonnet-latest · winner B · 97:3 · permalink

Side A is a trivial two-line tweak (removing a heading, fixing a disabled-link element), while Side B is a substantial architectural rework introducing a unified RPC batch API, room-scoped rooms/threads model (replacing ad hoc thread visibility), and corresponding CLI/server/type/test updates across many files. Side B represents real, lasting design work (new API surface, reducer restructuring, updated integration tests) versus Side A's cosmetic churn.

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

Side B is a foundational architectural rewrite: it replaces many REST handlers with a batched RPC API, splits room vs thread in events/reducer state, and updates the CLI and tests accordingly—lasting multi-room design. Side A only removes a heading and swaps a disabled paginator span for an anchor, which is trivial UI churn with almost no lasting value.

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

Side B is a major architectural refactor that consolidates many REST endpoints into a batch RPC API, introduces room-scoped commands and data models (room/thread separation), extracts validation into a reusable module, updates reducer/event structures, and migrates the CLI and tests to the new protocol. Side A only removes a heading and changes a disabled paginator element from a <span> to an inert <a>, which is a minor UI tweak with little lasting impact.

comparison · c_2595b6007624 (tommy-mor) vs c_cd965c070df3 (tommy-mor)
~anthropic/claude-sonnet-latest · winner A · 85:15 · permalink

Side A is a substantial architectural overhaul—introducing a unified RPC batch protocol, room/scope model, and refactoring CLI, server routes, reducer state, and tests across dozens of files—representing significant lasting design work. Side B is a small, targeted bugfix (fixing Reddit child import wiring and unranked labels) with minor test updates, useful but narrow in scope and impact compared to A's systemic changes.

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

A introduces a lasting architectural pivot: batched `/api/v0/rpc`, room-scoped content (rooms vs forum threads in events/reducer), and CLI Public/Private scoping that replaces many REST handlers. B is a valuable but narrow fix—correct Reddit children attach via `apply_entity_under_parent` and title labels in the ranking panel—without core model impact comparable to A.

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

Side A introduces a substantial architectural change: it consolidates many REST endpoints into a batch RPC interface, adds room-scoped commands and data models (room/thread separation), updates the CLI to use the new RPC layer, and refactors validation and reducer/event handling to support room-aware behavior. Side B fixes a real Reddit import bug by attaching imported children directly under the subreddit and improving unranked labels with tree metadata, but its impact is localized compared with A's lasting API and data-model redesign.

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

Side B is a substantial, coherent refactor introducing an RPC batch API, room/thread scoping (ScopeId::Room replacing ThreadVisibility hack), and updates across server, CLI, types, and tests/integration scripts to match — real architectural work with passing test coverage. Side A merely adds unintegrated scaffolding (Dockerfile, fly.toml, deps.edn, and orphan .rs files not wired into any module), providing little demonstrable lasting value.

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

B is a lasting architectural pass: it consolidates the scattered REST surface into a batched RPC API, splits permission boundaries into rooms vs forum threads in events/reducer state, and updates CLI plus tests accordingly. A only adds seed/deploy scaffolding (Dockerfile, fly.toml, deps.edn) plus small standalone modules (event_log, views), which is useful plumbing but not core product design.

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

Side B performs a substantial architectural migration: it replaces many individual REST endpoints with a unified RPC batch API, introduces room-scoped commands and data structures (room/thread separation), updates the reducer and event model, and adapts the CLI, server, tests, and shared types to the new design. Side A adds useful infrastructure such as a Dockerfile, deployment config, an event log helper, and a persisted view counter, but these are comparatively isolated additions rather than a project-wide API and data model evolution.

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

Side B is a substantial, coherent architectural refactor: it replaces many ad-hoc REST endpoints with a unified batch RPC protocol, redesigns the reducer's scope/room model (Thread->Room, thread_id->room_id/thread_tag), and updates CLI, types, and all integration/grants tests to match — a real, consistently-applied design change with lasting structural value. Side A is a small, useful but narrow UI polish (vote-count badge, HUD unpin-via-POST bugfix) that touches a handful of files and one new helper/test, offering much less lasting architectural value than B's system-wide rework.

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

B replaces fragmented REST handlers with a unified batch RPC surface, remodels the event/reducer domain (rooms vs threads, room_id + thread_tag, scoped ingest indexes), and wires the CLI and tests through that design—lasting core architecture. A is useful but narrow UX polish: unpin-via-POST on the pin HUD, pairwise vote counts on garden vote icons, CSS/docs, and a browser assertion.

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

Side B is a substantial architectural refactor that consolidates many REST endpoints into a typed RPC interface (`/api/v0/rpc`), updates the CLI to use it, introduces room-scoped data and events (`room_id`/`thread_tag`), and adapts reducers, routing, tests, and shared types to the new model. Side A adds useful UI improvements (vote counts on compare links, HUD unpin action, tests, and styling), but these are incremental features compared with the lasting API and data-model redesign in Side B.

comparison · c_ebc883667d61 (tommy-mor) vs c_2595b6007624 (tommy-mor)
~anthropic/claude-sonnet-latest · winner B · 85:15 · permalink

Side B is a substantial architectural change: it replaces a sprawling set of ad-hoc REST endpoints with a unified RPC batch protocol, reworks the reducer's room/thread model (ScopeId, RoomState vs ForumThreadState), updates the CLI to use scoped subcommands and RPC calls, and updates the full test suite and integration scripts to match — a real, cohesive advance in the project's data model and API surface. Side A is a much smaller, purely mechanical fix (deleting a duplicate leftover forum.rs so `mod forum` resolves), which is necessary but minor cleanup rather than new capability or design.

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

Side B replaces the old REST surface with a unified RPC batch API and remodels the domain (rooms vs threads, ScopeId::Room, room_id/thread_tag on ingest, grants/RoomCreated), which is lasting architecture across server, CLI, types, and tests. Side A only deletes a duplicate monolithic forum.rs and wires the already-split forum/ modules so Rust module resolution is unambiguous—necessary cleanup, not new product capability.

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

Side B introduces a substantial architectural change: it replaces many specialized REST endpoints with a unified RPC API, updates the CLI to use batched RPC commands, refactors the reducer and event model from thread-centric to room/scope-aware data structures, and propagates those changes through tests and types. Side A mainly removes the obsolete monolithic `forum.rs` in favor of the already-split `forum/` module tree and adds `forum/mod.rs`, which is a useful cleanup to resolve module ambiguity but is primarily structural rather than adding new project capabilities.

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

Side B untangles a real design flaw—rooms (permission boundary) were previously conflated with forum threads—introducing a proper `RoomCreated`/`RoomState` model and a unified RPC batch API that the CLI and tests are migrated onto, which is a more foundational and consequential architecture fix. Side A is a solid but narrower DRY refactor (a shared `room_route_segment` helper plus new URL/YouTube normalization) that removes duplication but also trades away human-readable `/r/{short}/{slug}` URLs for a concatenated, length-coupled segment. Both are substantial, but B addresses a deeper structural problem with broad, well-tested follow-through, giving it more lasting value despite being messier and self-described as a first pass.

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

B re-architects the domain and API: rooms replace thread-as-boundary (RoomCreated, room_id + thread_tag on Ingest, ScopeId::Room, ingests_by_scope_thread), collapses many REST handlers into a batched RPC surface, and updates CLI/tests accordingly—foundational, lasting structure. A is a focused URL cleanup (fixed-width /r/{short}{slug} helpers, route/handler/test updates, plus external URL/YouTube normalization) that improves consistency but builds on surface encoding rather than core model.

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

Side B introduces a lasting architectural change by consolidating many REST endpoints into a typed batch RPC interface (`RpcCommand`/`RpcResult`), refactoring the CLI to use it, and restructuring reducer/event models around room and thread separation (`room_id` + `thread_tag`). Side A makes a useful URL refactor—centralizing private room route encoding/decoding with `room_route_segment` and adding URL normalization helpers—but it is narrower in scope and primarily updates routing and URL handling rather than the project's core API and state model.

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

Side B is a substantial architectural migration (REST endpoints → unified RPC batch protocol, room/scope model rework, CLI restructuring, extensive test updates) that lastingly changes how the whole system communicates, whereas Side A is a small, focused feature addition (pool-scoped voting) that is useful but narrow in scope. Despite B's larger diff being partly explained by scope, its content is deliberate consolidation and simplification (removing many near-duplicate REST handlers into one rpc.rs) rather than noise, giving it more durable architectural value than A's incremental UI feature.

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

B is a foundational redesign: it collapses scattered REST handlers into a batch RPC API, splits rooms from forum threads in the event/reducer model (room_id + thread_tag, ScopeId::Room, grants on rooms), and rewires CLI and tests around that model. A is a solid, complete UX feature (pool-scoped /vote and next-pair navigation) but stays local to the garden vote UI and does not reshape core product architecture the way B does.

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

Side B introduces a foundational API redesign by replacing many individual endpoints with a typed RPC batch interface, refactoring the reducer and event model from thread-centric to room/scope-aware data, and updating the CLI and tests to use the new architecture. Side A is a well-executed feature that adds pool-scoped voting, including `pool` query handling, UI links, and context-preserving navigation, but it builds on the existing system rather than reshaping core infrastructure.

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_48edc893c5b0 (tommy-mor) vs c_2595b6007624 (tommy-mor)
~anthropic/claude-sonnet-latest · winner B · 65:35 · permalink

Commit B is a coherent, tested architectural overhaul: it introduces a unified batch RPC protocol (types, server dispatch, CLI rewiring), separates rooms from forum threads with a real capability model, and updates all integration/unit tests and the grants sandbox test to match — a foundational change that many future features can build on. Commit A adds a useful but narrower feature (a templated `__rpc__` hole-filling mechanism and a single `/ui` endpoint for HTML actions) with good docs/tests, but it's a smaller, more localized addition compared to B's system-wide redesign of the API surface and permission model.

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

B re-architects the core model (rooms vs forum threads, ScopeId::Room, Ingest room_id/thread_tag) and replaces scattered REST handlers with a unified RPC batch surface plus CLI/tests, which is lasting platform design. A adds a useful POST /ui form-template and progressive thread-form morphing, but it is a UI convenience layered on existing web endpoints rather than structural backend change.

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

Side B introduces a unified batched RPC API (`/api/v0/rpc`), migrates the CLI to it, refactors validation into shared modules, and restructures the core data model from thread-centric to room/scope-aware (`room_id`, `thread_tag`, scoped reducer state). These are foundational architectural changes affecting server, client, events, reducer, types, and tests, whereas Side A primarily adds a new `/ui` endpoint with HTML UI actions, form-template handling, and reuses existing web-post logic to support progressive browser interactions.

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

Commit B is a substantial architectural migration (REST endpoints to a unified RPC batch API, introducing room-scoped state, rewriting reducer/thread indexing, CLI restructuring, and updating extensive integration/grant tests) that changes the project's core API surface and permission model. Commit A is a well-scoped, tested algorithmic refinement to pair-selection heuristics in one file, valuable but far narrower in scope and impact than B's system-wide restructuring.

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

B lands a foundational redesign: rooms as the permission/scope boundary separate from forum thread tags, a unified batch RPC surface replacing many REST handlers, and matching reducer/event/CLI/test updates—structure the project keeps building on. A is a precise, well-tested pair-priority improvement (attach isolates before isolate–isolate, then zip adjacent ranks) but is incremental product logic on an existing mechanism, so it carries less lasting architectural weight than B despite B’s larger mechanical migration surface.

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

Side B performs a substantial architectural migration: it replaces many individual REST endpoints with a unified RPC API, refactors the CLI to use it, introduces room-scoped operations and room/thread separation in events and the reducer, and updates tests and data structures throughout to support the new model. Side A is a well-targeted improvement to pair selection heuristics—adding smarter bridge prioritization, rank-based refinement ordering, and corresponding tests—but its impact is confined to one algorithm, whereas Side B establishes a broader, lasting platform redesign.

comparison · c_97611919bf0b (tommy-mor) vs c_2595b6007624 (tommy-mor)
~anthropic/claude-sonnet-latest · winner A · 55:45 · permalink

A is a disciplined, well-tested type-safety refactor: it replaces the stringly-typed CanonicalItemUrl newtype with a proper ItemId enum (Root/Local/Web/Opaque), fixes real correctness hazards (Borrow<str> hacks, parent-boundary bugs, external-URL identity), and updates every call site and test consistently while removing a stale planning doc. B is a much larger, messier 'first pass' that guts and rewrites the entire API surface into a single RPC batch endpoint and splits rooms from threads—valuable architecturally, but far noisier (whole files deleted/rewritten, less polished, explicitly marked as a first pass), making its net lasting contribution harder to credit cleanly compared to A's tighter, correctness-focused change.

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

B lands lasting product architecture: billing-weight reactor changes (Ingest room_id+thread_tag, ScopeId::Room, RoomCreated/grants, forum keyed by (scope, tag)) plus a single batch RPC surface and CLI public/private scoping that replace the scattershot REST handlers. A’s ItemId migration is a valuable, correct design cleanup (enum identity through reducer/ranking/HTML and dropping CanonicalItemUrl/plan.md), but it largely re-expresses existing canonical-string keys rather than expanding what the system can do.

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

Side A completes a substantial architectural migration from `CanonicalItemUrl` strings to a structured `ItemId`, updating reducer state, ranking, routing, serialization, and introducing dedicated `item_id.rs`/`item_wire.rs` modules while preserving behaviors like parent resolution and display paths. Side B consolidates many HTTP endpoints into a batch RPC API and renames thread concepts to rooms, but much of the patch is endpoint relocation and plumbing rather than introducing a deeper domain model change.

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

Side A is a substantial, coherent architectural change (RPC batch endpoint replacing dozens of REST routes, room/thread scoping refactor across CLI, server, reducer, events, and tests) that establishes a lasting new API design with broad test coverage updated to match. Side B is a smaller, more localized refactor (vote-compare UI morph behavior, ItemId normalization for Reddit imports, test helper extraction) that is useful but narrower in scope and impact than A's system-wide restructuring.

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

Side A is a foundational architectural rewrite: it unifies the HTTP surface into a batched RPC API, separates room permission boundaries from forum thread tags in events/reducer state, and rewires the CLI plus integrations accordingly—lasting multi-tenant design rather than surface churn. Side B only improves the HTML pair-vote UX (in-place morph instead of redirect), extracts pair-selection helpers, and normalizes Reddit item IDs, which is useful but narrower and more UI-local.

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

Side A introduces a substantial architectural change by consolidating many REST endpoints into a batched RPC API, adding room-scoped commands (`Public`/`Private`), separating room and thread concepts (`room_id` vs `thread_tag`), and refactoring validation and reducer logic to support scoped content while updating tests and CLI accordingly. Side B mainly adds a new vote comparison UI flow, in-place DOM morphing, pair-selection helpers, and storage normalization improvements, which are useful features but have a narrower, presentation-focused impact than A's core API and data model redesign.

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

Side B is a large but coherent, directly-relevant refactor (RPC batch API, room/capability model, CLI and test updates) that touches only code the project actually ships and runs. Side A's real value—streaming event-log replay and offloading Reddit JSON out of GlobalTree—is genuine but small, and it's buried under a massive vendored 'durable' crate (docs, examples, benchmarks, nested-collection abstractions, duplicate Cargo.lock) that adds heavy build dependencies (rocksdb/bindgen/clang) and speculative generality far beyond what storing a JSON blob requires, which reads as generated noise rather than necessary code.

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

B consolidates the HTTP surface into a batch RPC API and reworks the reducer so rooms own permissions while forum threads are scoped separately—an architectural backbone change that multiplies private-room support through CLI, events, HTML, and tests. A meaningfully cuts peak RAM by streaming event replay and parking Reddit JSON in RocksDB, but most of its diff is vendoring the large durable crate rather than net new domain logic.

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

Side A implements concrete infrastructure changes with lasting operational impact: it introduces a RocksDB-backed `EntityStore`, moves raw Reddit JSON out of in-memory state, updates reducers to store only derived views, and replaces full event-log loading with streaming replay to reduce startup memory. Side B is a broad API and architecture refactor (RPC batching, room-scoped commands, endpoint consolidation, reducer changes), but much of the patch is interface reshaping and endpoint migration rather than delivering a similarly direct improvement to correctness or resource usage.

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

A is a focused, well-tested feature/bugfix (deterministic block tokens, proper prose URL tokenization with fence-awareness, breadcrumb root fix) that clearly improves correctness and is validated by new unit tests. B is a sprawling 'first pass' architectural rewrite (REST endpoints collapsed into one giant RPC dispatcher, Thread→Room renaming) that deletes a lot of previously tested, well-structured code and introduces a large, less type-safe generic command enum — valuable functionality-wise but explicitly unfinished/exploratory and far noisier relative to its net design benefit.

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

B restructures the core product model (rooms vs thread tags), event schema, reducer indexing, and consolidates the scattered REST surface into a batch RPC API with CLI/tests updated to match—foundational multi-room architecture. A is a solid but narrower win: prose item-ref tokenization, stricter braced bodies, and garden linkify for URL/dash refs, plus small breadcrumb correctness.

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

Side A delivers cohesive, lasting parser and rendering improvements: it introduces typed deterministic block masking, a prose item-reference tokenizer that correctly avoids code fences and trims URL punctuation, enforces braced DSL bodies, updates linkification for raw URLs/external references, and adds extensive tests covering these behaviors. Side B is a very large architectural refactor that replaces many REST endpoints with a new RPC layer and renames thread/room concepts, but much of the patch is migration and code movement rather than clearly new functionality, making its enduring value less certain than A's targeted correctness improvements.

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

Side A ships production-critical infrastructure (Dockerfile, CI/CD with test gating, fly.toml) plus a working live audit dashboard, and includes concrete bugfixes (OPENROUTER_API_KEY guard for contested rankings, GITHUB_TOKEN auth for private git fetches, dedup of object-hash checks, epoch retry logic) all backed by new passing tests. Side B is a large, self-described 'first pass' rewrite of the entire server API into an RPC batch model, which is architecturally ambitious but admittedly unfinished, deletes existing test coverage (e.g. debug_query_params.rs) without full replacement, and carries higher risk of incompleteness/bugs typical of a first-draft refactor.

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

B redesigns the core product surface: it replaces many REST handlers with a batch RPC API, splits rooms (permission boundary) from forum thread tags in events/reducer state, and threads that model through CLI, types, and tests. A is high-value operational work (Fly deploy, CI gate, /watch audit UI, emission retries and status SSE), but it overlays constitution.py rather than changing enduring domain architecture, so B edges it on lasting design despite A’s polish.

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

Side B delivers a substantial architectural change by consolidating many REST endpoints into a typed RPC batch API, refactoring shared validation into a dedicated module, introducing room-scoped operations, and updating the CLI, server, event model, and tests to match. Side A adds valuable deployment infrastructure, a live audit dashboard, SSE progress reporting, and operational improvements, but much of its impact is in observability and deployment rather than the project's core API and data model.

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

Side A is a substantial architectural migration (converting the entire REST API surface to a batched RPC model, room/thread scoping refactor, reducer state redesign, and extensive test rewrites) that establishes the foundation the rest of the codebase builds on. Side B is a small incremental feature (RoomList command) built entirely on top of A's RPC infrastructure, useful but narrow in scope and lasting impact by comparison.

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

Commit A is a foundational redesign: REST endpoints collapse into a batch RPC API, events/reducer split permission boundaries (rooms) from forum channels (thread tags), and the CLI gains public/private scoping— lasting structural value across server, types, tests, and client. Commit B only adds a RoomList RPC + CLI subcommand with isolation tests, a useful but narrow feature that sits on top of that architecture.

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

Side A introduces a new batched RPC architecture (`/api/v0/rpc`), refactors the CLI to use typed RPC commands, separates room and forum concepts, migrates event and reducer data from thread IDs to room/thread metadata, and centralizes validation into reusable modules. Side B is a useful incremental feature—adding a `RoomList` RPC command, CLI subcommand, and integration tests for per-user room visibility—but it builds on the infrastructure established by Side A rather than changing the project's core design.

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

A replaces fragile string-splitting canonicalization with a properly designed, composable url_rules engine (real URL parsing via the `url` crate, per-domain rules, alias detection, YouTube/Reddit normalization) backed by thorough new unit tests and documentation — a focused, correct, lasting design improvement. B is a much larger but self-described 'first pass' refactor that mostly relocates existing REST-handler logic into one giant monolithic rpc.rs match statement, trading modularity for a batched RPC surface without clearly improving code quality, making its long-term value less certain despite the larger diff.

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

B delivers a lasting domain/API redesign: permission boundaries become rooms (RoomCreated, ScopeId::Room, room_id on Ingest) separate from forum thread_tag, with a unified batch RPC surface that replaces many REST handlers and scopes the CLI (public/private). A is a solid identity rewrite (full https ItemIds plus a composable url_rules engine and breadcrumb/parent fixes), but a large share of that patch is mechanical ID/string updates across tests versus B’s structural event/reducer/API changes.

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

Side A introduces a reusable URL canonicalization subsystem (`server/src/url_rules/`), converts `ItemId` to canonical full URLs, centralizes parsing/parent/breadcrumb logic, and updates projection and Reddit handling to consistently normalize persisted IDs. Side B is a sweeping API refactor that replaces many endpoints with a single RPC layer and room-scoped commands, but much of the patch is code movement and interface consolidation rather than new core behavior, making A's normalization design and identity fixes more foundational and durable.

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

Side A introduces a full RPC batch architecture (rpc.rs, room/scope model, CLI Public/Private commands) that meaningfully restructures the API surface and adds real new capability (rooms, batched calls, scoped garden/forum access), backed by substantial test and integration updates. Side B is a narrower, cleaner refactor (identity/canonical_path split, dropping '@' sigils) that improves code hygiene but has smaller lasting architectural impact than A's broader system redesign, even though A's diff is messier and less polished in places (e.g. leftover unused variables, more surface area to maintain).

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

Commit A is a major architectural change: it consolidates REST into a batch RPC API, introduces room/scope separation (RoomCreated vs ThreadCreated, room_id+thread_tag on Ingest, scoped forum indexes), and rewires the CLI and tests around multi-room access. Commit B is valuable but narrower—extracting canonical_path/identity and enforcing naked wire identities without @—and much of A’s surface already assumes those identity rules.

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

Side A replaces many individual REST endpoints with a unified RPC batch interface (`/api/v0/rpc`), updates the CLI to use it, introduces room-scoped commands (`public`/`private`), and restructures reducer/events to separate rooms from forum threads (`room_id` plus `thread_tag`), which is a substantial architectural change touching client, server, tests, and data model. Side B is a useful cleanup that extracts canonicalization/identity parsing into dedicated modules and enforces stored-form identities without `@`, but it is primarily a refactor and validation improvement rather than introducing comparable new project capabilities.

comparison · c_df12ba3b70a8 (tommy-mor) vs c_2595b6007624 (tommy-mor)
~anthropic/claude-sonnet-latest · winner A · 60:40 · permalink

Side A is a focused, verifiable change: it fixes a real bug (the /-/ external garden index always querying a bogus parent so it looked empty), adds a well-tested GitHub import-card resolver feature with unit and integration tests, and includes matching CSS across themes. Side B is a sprawling 'first pass' refactor (REST endpoints collapsed into one 1300-line RPC dispatcher, thread_id renamed/split into room_id+thread_tag, ThreadCreated→RoomCreated) that touches nearly every file; while it adds real room/capability functionality, its own commit message signals it's unfinished/exploratory, and the renames plus monolithic dispatcher trade clarity for scope in a way the fixed, tested bug/feature in A does not.

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

B establishes lasting platform structure: a single batch RPC surface, Ingest split into room_id + thread_tag, ScopeId::Room with separate rooms vs forum_threads, and CLI public/private scoping—core model work the whole API rides on. A is a solid, tested product fix (/-/ host roots via external_root_host_items) plus GitHub card schema/render on compare, but narrower side-feature value versus B’s architectural cut.

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

Side B introduces a substantial architectural shift by consolidating many separate REST endpoints into a typed RPC layer, separating validation into its own module, and changing the data model from thread-centric to room-centric (`room_id` + `thread_tag`), with corresponding reducer, CLI, event, and test updates. Side A contains a valuable functional bug fix for the external garden index (`external_root_host_items`) and adds richer GitHub import card rendering, but much of its patch is feature work and module reorganization rather than the broad infrastructure change delivered by Side B.

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

Side A is a large but purely mechanical/incomplete refactor (RPC batch API, room scoping) with no evidence it compiles cleanly end-to-end in this diff (e.g. missing imports, unused fields), representing churn/rearchitecture rather than a targeted fix. Side B fixes a real, concrete multi-user bug (a shared sentinel AgentBound delegate blocking all but the first human voter), removes the buggy sentinel mechanism cleanly across CLI/server/types, and adds a targeted regression test proving the fix, making it a smaller but more clearly correct and valuable change.

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

Commit A delivers a lasting architectural redesign: collapsing the scattered REST handlers (garden/forum/ingest/rank/etc.) into a single room-scoped RPC batch surface, splitting threads from permission rooms in the reducer/events model (ScopeId::Room, room_id+thread_tag on Ingest, forum_threads/ingests_by_scope_thread), and updating CLI + tests accordingly. Commit B is a correct and necessary but narrow bugfix that drops fake browser sentinel delegates so AgentBound no longer blocks subsequent human voters.

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

Side A introduces a substantial architectural change: it replaces many individual REST endpoints with a unified batched RPC interface, restructures the CLI around room-scoped commands, separates room and thread concepts in the event/reducer model, and updates validation, routing, tests, and data structures to support the new design. Side B fixes a real multi-user bug by removing browser sentinel delegates so browser-originated posts no longer create conflicting AgentBound entries, but it is a targeted correctness fix compared with Side A's broader, lasting platform restructuring.

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

Side A adds a self-contained, well-designed URL canonicalization module (DFA graph + builder pattern) with exhaustive, meaningful test coverage and clear separation of concerns, representing focused lasting value. Side B is a sprawling refactor that collapses many typed REST endpoints into one large, undifferentiated RPC dispatcher (rpc.rs, ~1300 lines) and renames thread/room concepts throughout the codebase—functionally useful (rooms/capabilities) but mostly high-churn mechanical restructuring with reduced modularity and higher review/maintenance risk.

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

B’s commit changes the product’s core model (room vs thread/tag, ScopeId::Room, grants keyed by room) and replaces many REST handlers with a single batched RPC surface wired through CLI, reducer, events, and tests—foundational multi-room architecture. A adds a high-quality, well-tested URL DFA/graph module, but it is a focused subsystem rather than a platform-wide lasting redesign; much of B’s size is necessary consolidation, not mere churn.

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

Side A adds a substantial new URL canonicalization subsystem: a semantic graph/DFA with declarative graph builder, URL parsing and normalization, generic fallback behavior, breadcrumb generation, encoding/security handling, and extensive unit and integration tests for Reddit, YouTube, and generic URLs. Side B is a large architectural refactor that consolidates many REST endpoints into an RPC layer and renames thread concepts to rooms while preserving existing behavior, but much of the patch is migration and code movement rather than introducing comparable new end-user functionality.

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

Side A is a large mechanical refactor (REST endpoints collapsed into an RPC batch dispatcher) with lots of churn but no new correctness guarantee — it's mostly moving code around. Side B fixes a real, subtle bug (feed cutoff using wall-clock timestamps instead of durable append order, causing missed/duplicated posts under concurrent writes or clock rollback) and adds permission-aware multi-room visibility with targeted regression tests, delivering concrete lasting correctness value in a small, precise diff.

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

A is a foundational redesign: batch RPC replaces the REST surface, events/reducer separate room scope from forum thread tags (RoomCreated, ScopeId::Room, ingests_by_scope_thread), and the CLI/tests are rewired to that model. B is a high-quality but narrow correctness fix—stable feed anchors on ingest index plus permission filtering—with strong tests, yet it only hardens one path after A’s architecture is in place.

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

Side A replaces many ad hoc REST endpoints with a unified RPC batch API, restructures the CLI around scoped public/private rooms, introduces room-aware routing in events and the reducer, and factors ingest validation into a reusable module. Although it is a large refactor, it establishes a lasting architectural foundation and migrates existing functionality, whereas Side B is a focused improvement that makes feed catch-up stable under timestamp collisions and permission-aware by anchoring to durable ingest order and adding targeted tests.

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

Commit A is a coherent, complete feature (Reddit OAuth linking + UUID-canonical identity) with clear rationale, tests, and mock server updates that lastingly clarify identity semantics. Commit B is a large, admittedly 'first pass' architectural rewrite (RPC batch API replacing REST endpoints) that guts many well-tested endpoint modules, changes wire formats broadly, and is explicitly labeled as unfinished/in-progress, making its long-term value less certain despite its size.

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

B’s lasting impact is the domain split of room (permission boundary) vs thread_tag (forum channel), the RoomCreated/grants model, and collapsing the REST surface into a single batch RPC that the CLI and tests now use—core spine changes, not mere polish. A is a strong, finished auth design (UUID-canonical identity, Reddit link flow, private linked-providers UX, pending-weight batch fix), but it is additive around accounts rather than reshaping the product’s primary API and event model; B still edges it despite “first pass” migration bulk.

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

Side A delivers a coherent identity redesign: OAuth providers become private links to a canonical UUID, adds Reddit OAuth end-to-end, handles account-link conflicts, exposes linked providers safely, and fixes trust-weight projection updates by tracking pending writes within a batch. Side B is a broad API refactor that consolidates many endpoints into an RPC layer and renames thread/room concepts, but much of the patch is migration and relocation of existing logic rather than introducing comparably new functionality.

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

Metadata
commit_idc_2595b600762465babcab1f4272ad61eb4390770d7035d12f38ccc64e15211d48
patch_sha256342484381002a5b7a782af7607018f86359aa56aabd3f93b07e34bbfe93729ba
patch_identitygit-patch-id-stable-v1:921ff65634d0c756665dfc5fe0155db852c2c365
committer_timestamp_ms1775438366000