comparison · c_b0194743d156 (tommy-mor) vs c_fbeec5c4ad18 (tommy-mor)
Side A fixes a real, concrete bug (canonical tilde-root path normalization causing inconsistent HashMap keys for top-level items) with clear code changes plus targeted unit/integration/browser tests verifying the fix. Side B is a substantial infrastructure change to the ranking meta-system (per-commit vs per-contributor ranking) which is valuable but is self-referential tooling for the judging process itself rather than product code, and carries more diffuse churn across many call sites for a design change that is reasonable but not clearly 'lasting' in the same bug-fixing sense.
A delivers lasting product correctness: unifies tilde ontology root storage (`SLUG_TILDE_ONTOLOGY_ROOT`, `normalized_storage`, `tilde_http_path_to_canonical`), fixes map lookups/parent handling so garden root rankings and legacy `…/~/` keys work, and backs it with unit, integration, and browser regressions. B is a valuable constitutional refinement (pairwise per commit instead of bundled authors, rollup, epoch UI), but it mostly rewires existing ranking plumbing rather than fixing core domain behavior.
Side A fixes a substantive canonical-path bug by unifying ontology root handling (`https://slug.social/~` vs `.../~/`), normalizing storage keys before lookups, introducing shared path conversion helpers, and updating rendering logic so root pages and sibling rankings behave correctly. It also adds extensive unit, integration, and browser regression tests covering these cases, whereas Side B mainly changes the ranking workflow from contributor-level to commit-level with corresponding prompt, evidence, UI, and test updates but does not address a core correctness issue in the project itself.
comparison · c_fbeec5c4ad18 (tommy-mor) vs c_0a9a8eab32ba (tommy-mor)
Side B fixes a concrete correctness/security bug (feed catch-up using ingest position instead of timestamp, preventing missed posts on clock rollback and leaked private-room content after permission changes) and backs it with thorough multi-user integration tests. Side A is a solid internal-tooling refactor (per-commit vs per-author ranking with rollup) but addresses a fairness/design limitation rather than a user-facing correctness bug, making B's impact more concrete and durable.
B fixes real feed correctness and privacy failures by anchoring catch-up to durable ingest index (not colliding/backwards timestamps), centralizing logic in rpc_feed, and adding multi-user private-room/revoke regression tests plus a room field on posts. A is a solid redesign—pairwise-rank each commit and roll scores up, with matching UI/evidence/tests—but it is mostly an internal ranking granularity change rather than closing missed-update and leak bugs.
Side B fixes substantive feed correctness by introducing durable ingest-order anchoring instead of timestamp-only cutoffs, preserving permission checks, adding room metadata to feed responses, and covering multi-user/private-room edge cases with comprehensive integration tests. Side A mainly refactors ranking from contributor-level to commit-level with UI/evidence updates and tests, which is a meaningful feature but less fundamental than correcting feed consistency and visibility bugs.
comparison · c_8dc1a8119370 (tommy-mor) vs c_fbeec5c4ad18 (tommy-mor)
Side B fixes a real structural bug in the ranking system (short-circuiting on single contributor instead of per-commit comparison), with corresponding test updates and UI surfacing, giving lasting improvement to the project's core fairness logic. Side A is a large but reasonable simplification/replacement of a fragile autocomplete parser with a simpler paste-and-go UX, which is valuable but more narrowly scoped and mostly deletion of complex, over-engineered code plus a UI feature swap.
B fixes core ownership mechanics: rank_commits no longer short-circuits on a single contributor, pairwise-ranks every eligible commit, rolls scores into contributor_ranking, and exposes per-commit rankings on epoch pages—with tests for the multi-commit same-author case. A’s paste-and-go rewrite correctly deletes an unreliable ~1.8k-line keystroke graph and race-prone client path, but that is a UI simplification of one feature, not a change to how lasting value is measured or paid out.
Side B changes the core ranking algorithm from contributor-level to commit-level by pairwise-ranking every eligible commit, rolling scores back up to contributors, updating evidence records, UI pages, and tests to reflect commit rankings. Side A mostly replaces an interactive autocomplete/parser graph with a much simpler paste-and-go URL parser and redirect, deleting substantial functionality in favor of a narrower workflow, even though it simplifies the implementation.
comparison · c_06fce70179bc (tommy-mor) vs c_fbeec5c4ad18 (tommy-mor)
Side B fixes a real design flaw (ranking collapsed to per-contributor comparisons, short-circuiting when only one contributor existed even with multiple commits) with a coherent refactor that ranks per-commit, rolls up scores, updates evidence pages, and adds targeted tests covering the new behavior. Side A is a substantial SSE-streaming feature addition for Reddit fetch UX with good logging, but it's more feature churn/plumbing than a structural correctness fix, and it also deletes some existing unit tests without clear justification.
B fixes lasting ranking design by pairwise-scoring every eligible commit (including multiple commits from one author) and rolling scores up, instead of short-circuiting on a single contributor and bundling patches; it also persists/surfaces commit_ranking on epoch pages with matching tests. A is a solid product refactor (SSE fetch stream, oneshot FetchJobResult, moved HTML/JS), but much of the diff is module relocation, dependency/lock churn, and logging rather than a governance-level correctness fix.
Side B fixes the ranking model to compare individual commits rather than short-circuiting on contributors, introduces per-commit ranking with contributor rollups, updates prompts/evidence, and adds tests covering same-contributor multi-commit cases. Side A adds a useful SSE-based entity fetch flow with streaming UI updates and worker completion signaling, but it is partly a refactor plus feature split, while Side B corrects a core ownership-allocation algorithm in a way that more directly affects project correctness.
comparison · c_abd68b5e771a (tommy-mor) vs c_fbeec5c4ad18 (tommy-mor)
Side B implements a substantive behavioral change (per-commit rather than per-contributor ranking, with score rollups and UI updates) backed by new/updated tests across three test files, representing meaningful lasting functionality. Side A is a small, correct bugfix (reordering a guard check) with a single test update, which is valuable but far more limited in scope and impact than B's structural rework.
B redesigns ranking from contributor-bundled short-circuiting to pairwise ranking of every eligible commit with score rollup, evidence/UI surfaces, and tests—core lasting protocol behavior. A is a correct but narrow bugfix that only reorders the zero-ratio guard before ensure_item/voted_pairs side effects.
Side B changes the core ranking behavior from contributor-level to commit-level by comparing every eligible commit, rolling scores back up to contributors, updating prompts, evidence, UI, and adding tests for same-contributor multi-commit cases and new ranking outputs. Side A fixes a real reducer bug by moving the zero-ratio guard before side effects to prevent ghost items and voted pairs, with an accompanying regression test, but its scope is much narrower than the architectural change in Side B.
comparison · c_2f5d9e0370f8 (tommy-mor) vs c_fbeec5c4ad18 (tommy-mor)
Side B changes the core ranking semantics from author-level to commit-level pairwise comparison, a substantive architectural fix (fair per-commit attribution, contributor rollups, updated UI/evidence pages) with accompanying test updates validating the new behavior. Side A is a large but mechanical DSL syntax reshuffle (moving explanation blocks before votes) that touches many files/tests but is mostly repetitive fixture/test churn rather than a fundamentally new capability.
A redesigns the core sorter DSL (explanation-first votes, path-then-body items) with a real parser split, multi-line pending-block handling, and consistent updates across docs, UI emit paths, and the full test/fixture surface—lasting product behavior. B improves ranking fairness by pairwise-scoring each commit and rolling up, plus epoch UI, but is a narrower infrastructure change confined mostly to constitution.py and its tests.
Side B changes the ranking algorithm itself from contributor-level comparisons to pairwise ranking of every eligible commit, adds commit-level evidence and rollup logic, updates UI/evidence pages to expose per-commit rankings, and fixes the short-circuit so multiple commits by one contributor are still evaluated. Side A is a broad DSL syntax migration (leading explanation blocks and title-first items) with parser rewrites and widespread fixture updates, but it primarily changes input format rather than adding comparable lasting system capability.
comparison · c_3f420a1f5aa1 (tommy-mor) vs c_fbeec5c4ad18 (tommy-mor)
Side B changes the core ranking algorithm from author-level to per-commit pairwise ranking, fixing a real correctness gap (same-contributor multiple commits were never compared) and adds rollup logic, updated evidence schema, epoch page rendering, and new/updated tests covering the behavior. Side A is a sizable but purely additive UI feature (theme cookie/selector) plus a room-URL helper refactor, useful but narrower in scope and lower architectural impact than B's fix to the ranking/reward mechanism.
B fixes ranking to pairwise-compare every eligible commit (not bundled per author) and only short-circuit on a single commit, with rollup scores, evidence fields, epoch UI, and tests—a lasting fairness design for emissions. A’s theme cookie/POST work is real UX polish plus useful private-room wire URL helpers, but much of the diff is repetitive layout/jar plumbing rather than core design.
Side B changes the core ranking algorithm from contributor-level comparisons to pairwise ranking of individual commits, removes the incorrect single-contributor short circuit, rolls commit scores back up to contributors, updates evidence/UI, and adds tests covering same-contributor multi-commit behavior. Side A mainly implements persistent theme handling across pages and login plus room-aware URL generation, which is useful, but it is largely feature integration rather than a fundamental correctness improvement to the project's ownership allocation logic.
comparison · c_fbeec5c4ad18 (tommy-mor) vs c_c124c217f89c (tommy-mor)
Side B implements a real, previously-stubbed feature (Reddit fetching with OAuth token management, rate-limit/backoff handling, JSON parsing, and tests) that delivers working functionality end-to-end. Side A is a substantial refactor of the ranking system (commit-level vs contributor-level pairwise ranking) which is valuable but is an internal restructuring of existing logic rather than new capability, and its large diff carries more churn relative to net new behavior.
A redesigns the core ownership-ranking path from author-bundled short-circuiting to true per-commit pairwise comparison with contributor rollup, evidence/UI surfaces, and targeted tests (same-author multi-commit, single-commit skip). B is a solid Reddit fetch worker (OAuth, rate limits, parsing) replacing a stub, but it is peripheral feature work plus .gitignore/todo noise, not a lasting change to the project's constitutive allocation logic.
Side A changes the core ranking algorithm from contributor-level to commit-level, removes the incorrect single-contributor short-circuit, rolls commit scores back up to contributors for payouts, updates evidence/UI to expose per-commit rankings, and adds tests covering the new behavior. Side B adds a substantial Reddit background fetch pipeline with OAuth, rate limiting, and parsing, but it is a new feature with a TODO and less central impact than the fundamental correctness fix to ownership allocation.