comparison · c_55666fe32c48 (tommy-mor) vs c_76e946cb1d07 (tommy-mor)
Side A fixes a real bug (zero-ratio votes silently defaulting to 1:1 instead of being rejected/dropped) and adds bounded validation consistently across the DSL parser, HTTP handler, and reducer, backed by new unit and integration regression tests. Side B is purely cosmetic renaming (canonical -> item/wire) with no behavioral change and no new tests, offering only marginal clarity value.
A adds real validation (reject 0:N and >100 ratios) across DSL, UI handler, and reducer, plus targeted unit/integration/browser test updates—lasting correctness for the ranking graph. B is almost entirely renames/comment wording (canonical→item, pick_random_distinct_*) with no meaningful behavior change.
Side A implements a substantive correctness change by enforcing vote ratio bounds (both sides at least 1 and at most 100) across the DSL parser, UI POST handler, and reducer, preventing invalid graph edges and adding unit, integration, and browser regression tests. Side B is almost entirely terminology cleanup and renaming (e.g. canonical→item, function and comment renames, removal of a small helper) without materially changing project behavior.
comparison · c_76e946cb1d07 (tommy-mor) vs c_db279f012399 (tommy-mor)
Side A performs a coherent semantic rename (canonical -> item/wire) across multiple modules and files, clarifying that ItemId is not a URL-canonicalization concept, along with doc comment improvements and test renames—this is real, lasting clarity work. Side B is a narrow CI/workflow tweak (npm OIDC publishing setup) that is useful but small, environment-specific, and not core project logic, making it lower lasting value to the codebase itself.
B makes a real CI/security change: OIDC trusted npm publishing (Node 22, newer npm, drop NODE_AUTH_TOKEN secrets). A is almost entirely terminology renames (canonical→item/wire, function/field renames, comment tweaks) plus removing a thin tilde_http_tail wrapper, with no meaningful behavior or design improvement.
Side B makes a functional CI/release change by updating the npm publishing workflow for OIDC trusted publishing: it moves to Node 22, upgrades npm to a version supporting OIDC, and removes reliance on repository NPM tokens during publish steps. Side A is primarily a terminology cleanup and API renaming (e.g. `pick_random_distinct_canonical` to `pick_random_distinct_item_pair`, `canonical` to `item`), with minor documentation edits and removal of an unused helper, which has much less lasting behavioral impact.