comparison · c_7752a1605bf0 (tommy-mor) vs c_7ca21f5e83a8 (tommy-mor)
Side B adds a substantial, functional integration test exercising real pool-scoped voting flows end-to-end, providing lasting regression coverage. Side A merely deletes a small entrypoint file with no compensating functionality added elsewhere in the diff, offering minimal lasting value.
B adds a full browser integration test (seed pool items, enter via /vote?pool=, assert pair scoping and edge-history morph across the vote/next-pair loop), which is lasting product coverage. A only deletes an obsolete 24-line test runner entrypoint—useful cleanup but no new behavior or protection.
Side B adds a substantial end-to-end browser test that seeds a pool, exercises the vote→next-pair workflow, and verifies key invariants such as votes appearing in edge history and all presented pairs belonging to the requested pool. Side A only deletes the JVM test runner entrypoint (`test/runner.clj`), removing functionality without introducing a replacement in the shown patch.
comparison · c_7ca21f5e83a8 (tommy-mor) vs c_410d9361a866 (tommy-mor)
Side B adds real feature functionality (Reddit post rendering with thumbnails, full-size images, link extraction), a new module, updated data model fields, CSS, and a unit test with fixture—lasting production code. Side A only adds a single browser test file for an existing feature, which has value but is narrower in scope and doesn't change any production behavior.
B adds lasting product value: EntityData image/link fields, Reddit parse helpers, a dedicated render/reddit module wired into rank lists and entity panels, CSS, and a fixture-backed unit test. A only adds a browser e2e test for pool-scoped voting—useful coverage, but no production behavior or design change.
Side B implements a lasting feature by introducing Reddit-specific rendering, extending `EntityData` with `image_url` and `link_url`, extracting those fields during Reddit parsing, integrating custom HTML into entity and ranking views, adding CSS, and covering the parser with a regression test and fixture. Side A adds an end-to-end browser test for pool-scoped voting, which improves verification but does not change the application's behavior or architecture.
comparison · c_59974b9da42a (tommy-mor) vs c_7ca21f5e83a8 (tommy-mor)
Side B adds a genuine new browser test exercising pool-scoped voting behavior, giving lasting regression protection with clear assertions. Side A's refactor is mixed value: it does split forum.rs into modules, but it also inlines several previously-named RPC helper functions back into duplicated call sites (undoing prior DRY abstractions) and bundles in an unrelated sample-fixture bb script, diluting the refactor's focus and quality.
B adds a lasting E2E browser test that seeds a pool, drives the vote→next-pair loop, and asserts edge history and pool membership—real regression protection for core behavior. A is mostly a mechanical split of forum.rs into modules plus inlined RPC helpers and an unrelated macOS sample-fixture script, improving layout without changing product behavior.
Side A performs a substantial architectural refactor by extracting forum functionality into focused modules (such as access, navigation, ingest, room members, and new-thread handling) while preserving behavior, and also adds a reusable macOS profiling utility (`sample-fixture`) integrated into the build tasks. Side B adds a valuable end-to-end browser test for pool-scoped voting, but it is verification only and does not change the project's architecture or runtime behavior, making its lasting impact smaller.
comparison · c_7b940fef005f (tommy-mor) vs c_7ca21f5e83a8 (tommy-mor)
Side B adds a substantial new browser test covering an end-to-end pool-scoped voting workflow, providing lasting regression protection and documentation of expected behavior. Side A is a small cleanup removing dead/unused parameters and code from a JS-builder function, which is useful but minor in scope and impact compared to a new test asset.
B adds a full browser integration test that seeds a pool, exercises the vote→next-pair loop, and asserts edge-history and pool membership—lasting regression protection for a core flow. A only drops unused parameters and dead preview-morph logic from vote_compare_post_success_js, a worthwhile but small cleanup with less ongoing impact.
Side B adds a new end-to-end browser test that seeds a pool, exercises the vote→next-pair workflow, and verifies both edge-history updates and that every displayed pair stays within the requested pool, providing lasting regression coverage for an important user flow. Side A mainly removes now-unused parameters and stops updating the vote-compare preview, simplifying the implementation but largely acting as cleanup with comparatively limited functional impact.
comparison · c_f6d0fed9bf9a (tommy-mor) vs c_7ca21f5e83a8 (tommy-mor)
Side A introduces substantial, lasting core functionality (form template substitution, ranking/rank-centrality algorithm with regression tests, reducer state machine, vote comparison UI, UI action dispatch) that forms real application logic and infrastructure, even though the diff includes messy artifacts like shell-prompt-contaminated files. Side B adds only a single browser integration test for pool-scoped voting, which is useful for verification but far narrower in scope and does not add product capability or design.
Side A lands substantial product foundation (reducer/ranking/vote UI flow, form-template UI actions, client plumbing, parser) that the system depends on long-term, despite some seed noise and design notes. Side B adds a valuable but narrow E2E browser test for the pool-scoped vote loop; lasting value is real regression coverage, not new design or core behavior.
Side A introduces substantial project functionality: core reducer and ranking logic, vote UI, parser infrastructure, form-template handling, UI actions, test scripts, and extensive unit tests. Side B adds a valuable end-to-end browser test for the pool-scoped voting flow, but it exercises existing behavior rather than adding new capabilities, so its long-term contribution is much smaller.
comparison · c_7ec67b9cef2c (tommy-mor) vs c_7ca21f5e83a8 (tommy-mor)
Side A is purely a planning document plus a thin, largely unused RouteContext wrapper with no call-site migration or tests, offering speculative future value but no functioning behavior change. Side B adds a concrete, runnable browser test exercising real pool-scoped voting flow end-to-end, which provides lasting regression protection and verifies actual application behavior.
B adds an executable browser test that seeds a pool, drives the vote→next-pair loop, and asserts pool-scoped pairs and edge-history updates—lasting regression coverage of real product behavior. A mostly adds a temporary plan.md plus a thin RouteContext newtype that delegates to ThreadNav without migrating call sites or introducing ItemId, so its durable code impact is smaller.
Side B adds an executable end-to-end browser test that seeds data, exercises the `/vote?pool=~/pool` flow through repeated vote/next-pair iterations, and verifies both edge-history updates and that displayed pairs remain within the requested pool, providing ongoing regression protection. Side A mostly introduces a detailed planning document plus a thin `RouteContext` wrapper around `ThreadNav` with re-exports, which establishes direction but does not yet change routing behavior or complete the refactor.
comparison · c_b8e80699547c (tommy-mor) vs c_7ca21f5e83a8 (tommy-mor)
A adds a full Reddit API client (rate limiting, multiple endpoints, typed Post/Comment models, custom deserializers, and extraction helpers)—lasting production infrastructure. B only adds one browser E2E test for the pool vote loop; valuable regression cover, but narrower and non-product code versus A’s reusable design.