constitution · epochs · watch · epoch 3

commit

c_28dfd8015c8a87720d

tommy-mor · sha1:0bebe81951930c1c231f1d219e433ee53545249c

download patch · raw event

message

Unify kaocha test discovery to one auto-discovered suite.

Replace the two hand-enumerated suites (:http-integration, :browser) with
a single :all suite that picks up every test.* namespace under test/. New
test files now run automatically without touching tests.edn — needed for
the test.ranking namespace added alongside the #146 fix, and for any
future tests.

Both ./TEST.sh and CI (.github/workflows/ci.yml) invoke
`clojure -M:kaocha`, so both pick up the new suite without changes.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

comparisons involving this commit

comparison · c_e4fb43f04791 (tommy-mor) vs c_28dfd8015c8a (tommy-mor)
openai/gpt-chat-latest · winner A · 3:2 · permalink

Commit A makes broader changes across the application by simplifying the vote-compare page structure and updating ontology ranking list styling in multiple themes, producing visible UI and layout improvements. Commit B is a useful maintenance change that replaces manually enumerated Kaocha test suites with automatic test discovery, reducing future configuration work and preventing missed tests, but it is limited to the project's testing infrastructure. Both are valuable, though A has the wider functional and user-facing impact.

openai/gpt-5.3-chat · winner B · 3:1 · permalink

Commit B meaningfully improves the project’s testing infrastructure by eliminating manual test enumeration and enabling automatic discovery of all test namespaces. This reduces maintenance overhead, prevents future omissions, and ensures CI and local runs stay consistent as new tests are added. Commit A is mostly a UI refactor and styling enhancement with limited functional impact, whereas B improves long-term reliability and developer workflow.

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

Side A makes broader, user-visible changes across multiple files, restructuring HTML layout and significantly updating ranking list styling in several themes. It impacts UI structure and presentation site-wide. Side B improves test infrastructure and maintainability, but is confined to a single configuration file and is smaller in scope. Overall, Side A represents a larger functional and visual contribution.

comparison · c_28dfd8015c8a (tommy-mor) vs c_4ed2e2cca39b (tommy-mor)
openai/gpt-chat-latest · winner B · 3:2 · permalink

Commit B fixes a runtime bug by defining GITHUB_API_BASE_URL with a sensible default, preventing a NameError during the GitHub OAuth callback and restoring functionality. Commit A improves the test infrastructure by replacing manually enumerated Kaocha suites with automatic test discovery, reducing maintenance and ensuring new tests are picked up automatically. While A is a useful developer-experience improvement, B has a more direct impact on application correctness and user-facing behavior.

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

Side A meaningfully improves the testing infrastructure by replacing brittle, manually enumerated suites with automatic discovery, reducing maintenance overhead and preventing future test omissions. Side B is a small but important bug fix (adding a missing configuration variable), yet its scope and impact are limited compared to the broader structural improvement in Side A.

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

Commit B fixes a runtime NameError in the GitHub OAuth callback by defining GITHUB_API_BASE_URL with a sensible default, directly resolving a user-facing authentication failure. Commit A improves test maintainability by unifying test discovery, which is valuable for developer workflow but does not fix a functional bug. Therefore, B has slightly greater impact.

comparison · c_e4fb43f04791 (tommy-mor) vs c_28dfd8015c8a (tommy-mor)
openai/gpt-chat-latest · winner B · 4:1 · permalink

Side B replaces two manually maintained Kaocha test suites with a single auto-discovered `:all` suite using the `^test\..+` namespace pattern, so new test namespaces run automatically without editing `tests.edn`, reducing ongoing maintenance and preventing missed tests. Side A mostly removes a wrapping `section` from the vote-compare HTML and adjusts ranking-list CSS styling across themes, which is primarily structural and visual rather than a lasting functional improvement.

openai/gpt-5.3-chat · winner B · 3:1 · permalink

Side B replaces two manually enumerated Kaocha suites with a single auto-discovered suite using `:ns-patterns ["^test\\..+"]`, ensuring new tests run without config changes and preventing silent omissions. Side A mainly removes a wrapping `section.vote-compare-shell` and adds CSS styling for ranking lists, which is largely presentational and less impactful on long-term correctness or maintenance.

openai/gpt-5.2-chat · winner B · 3:1 · permalink

Side B replaces two manually enumerated Kaocha suites with a single auto-discovering `:all` suite using `^test\..+`, ensuring new `test.*` namespaces run automatically without editing `tests.edn`, which improves long-term test reliability and maintenance. Side A mainly removes a wrapping `section` in `garden.rs` and tweaks CSS for ranking list styling (font sizes, counters, layout), which are largely presentational changes without comparable impact on project correctness or workflow.

~anthropic/claude-sonnet-latest · winner B · 6:4 · permalink

Side B makes a small, clear infrastructure fix that removes a maintenance trap (manually enumerating test namespaces), ensuring new test files are auto-discovered — a lasting, low-risk improvement to CI reliability. Side A is mostly cosmetic: removing an unused wrapper section (dead HTML markup) and CSS tweaks to ranking-list bullet styling, which is minor polish rather than substantive functionality or bug fixing.

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

B replaces brittle hand-enumerated kaocha suites with a single auto-discovered ^test\..+ suite so new tests run without editing tests.edn—a lasting maintainability fix used by CI and TEST.sh. A mainly drops a vote-compare-shell wrapper and retouches ranking-list number CSS across themes, which is minor presentational cleanup with less durable project impact.

comparison · c_28dfd8015c8a (tommy-mor) vs c_4ed2e2cca39b (tommy-mor)
openai/gpt-chat-latest · winner B · 3:2 · permalink

Side B fixes a runtime bug by defining `GITHUB_API_BASE_URL` with a sensible default, preventing a `NameError` during the GitHub OAuth callback when the API base URL was otherwise undefined. Side A improves test maintenance by replacing manually enumerated `:ns-patterns` with a single auto-discovered `^test\..+` suite, reducing future configuration work, but it primarily streamlines test configuration rather than correcting application behavior.

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

Side B fixes a runtime NameError by defining GITHUB_API_BASE_URL with a sensible default, restoring the GitHub OAuth callback’s functionality. Side A improves test configuration by replacing hardcoded namespace lists with a catch-all pattern, reducing maintenance, but it doesn’t fix a breaking issue.

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

Side B fixes a concrete runtime error by defining `GITHUB_API_BASE_URL` with a default and `.rstrip("/")`, resolving a NameError in the GitHub OAuth callback path. Side A improves test maintainability by replacing hand-enumerated suites with a single auto-discovered `:all` suite, but it’s a configuration refactor rather than a direct functional bugfix impacting production behavior.

~anthropic/claude-sonnet-latest · winner B · 6:4 · permalink

B fixes an actual runtime bug (NameError crashing the OAuth callback) by defining the missing GITHUB_API_BASE_URL constant, providing immediate functional correctness. A is a reasonable test-config simplification that reduces maintenance friction but carries risk of silently picking up unintended test.* namespaces and isn't fixing a live defect.

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

B fixes a real NameError by defining the missing GITHUB_API_BASE_URL used in the OAuth path, restoring correct runtime behavior. A is a worthwhile tests.edn simplification (auto-discover vs hand-enumerated suites) but is tooling ergonomics, not a production correctness fix.

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

B removes actual dead/redundant logic in production Rust code and updates the corresponding test to correctly verify the new invariant (items still registered, edges skipped), representing a real behavioral cleanup with verification. A is a config-only change unifying kaocha test suites, which is convenient but purely infrastructural and lower-risk/lower-value than fixing incorrect logic and test assertions in the core reducer.

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

A replaces hand-maintained ns allowlists with a single ^test\..+ auto-discovery rule, a lasting design fix so new suites (e.g. test.ranking) run without edits to tests.edn or CI. B only deletes a redundant zero-ratio early-return already enforced at the DSL/handler boundary and retunes one unit test—correct hygiene, but smaller lasting impact than the discovery simplification.

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

Side A replaces manually enumerated Kaocha test suites with a single auto-discovered `^test\..+` configuration, eliminating ongoing maintenance and ensuring new test namespaces run automatically without updating `tests.edn`. Side B mainly removes a redundant dead-code guard and updates the corresponding test expectations; while it simplifies logic, its impact is narrower than the lasting improvement to test infrastructure in Side A.

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

Side A is a small, coherent, real change: it fixes tests.edn to auto-discover all test namespaces, correctly explains why (new test.ranking), and verifies both CI and local scripts still work. Side B is an 'init seed' dump of large, seemingly copy-pasted/misplaced files (e.g. forms.rs and ranking.rs literally include a shell prompt and 'cat' command in the diff, files placed at repo root rather than proper module paths), which reads as unreviewed scaffolding rather than a deliberate, lasting contribution.

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

B seeds core product surfaces (reducer state machine, rank-centrality, vote compare UI, form/UI action plumbing, test entrypoints), whereas A only rewrites tests.edn suite ids into one ^test\..+ auto-pattern. A is a clean maintainability tweak; B’s lasting domain code outweighs A despite seed noise (shell/cat paste in forms.rs/ranking.rs, .tdsl notes, large parser prototype).

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

Side A makes a focused, lasting infrastructure improvement by replacing hand-enumerated Kaocha suites with a single auto-discovered `:all` suite (`^test\..+`), ensuring new test namespaces run automatically without editing `tests.edn`. Side B adds a large amount of mixed prototype code and planning notes, but several files (`forms.rs`, `ranking.rs`) even contain pasted terminal session text instead of valid source, making the patch noisy and likely broken despite its size.

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

Side A fixes a real functional bug (pinned posts polluting imports) with a targeted code change plus a test verifying both stickied and pinned fields are handled. Side B is a config simplification for test discovery that reduces maintenance friction but carries risk (auto-discovery could unintentionally pick up unwanted namespaces) and has no functional/test-of-behavior impact on the product itself.

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

A adds lasting product behavior: skip stickied/pinned Reddit listing children via a small helper, with a unit test covering both flag shapes. B only collapses hand-enumerated kaocha suites into one ns-pattern in tests.edn—useful DX, but config hygiene rather than app correctness.

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

Side A changes runtime behavior by filtering stickied/pinned Reddit posts during subreddit import, adds a dedicated helper, and includes a regression test verifying only normal posts are imported. Side B improves test configuration by replacing manually enumerated Kaocha suites with automatic namespace discovery, reducing maintenance, but it does not change application behavior.

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

Side A meaningfully reshapes the CLI's command hierarchy (splitting forum into list/show/post subcommands, requiring --delegate on posts, updating docs and integration tests to match) — a substantive, coherent feature/UX change touching real code paths and tests. Side B is a small, useful but narrow config tweak (auto-discovering test namespaces in tests.edn) that reduces future maintenance friction but has far less scope and immediate value than A's functional CLI restructuring.

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

Commit A redesigns the CLI surface (forum list/show/post subcommands, required tag/--delegate on post, dropped freestanding ingest) and keeps docs, server next-move strings, and integration tests aligned—lasting product/API structure. Commit B only collapses hand-enumerated Kaocha suites into one `^test\..+` pattern in tests.edn, a useful but small test-harness maintenance fix.

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

Side A makes a substantive CLI/API redesign by replacing the old `ingest` flow with explicit `forum post`, splitting forum operations into `list/show/post` subcommands, updating RPC responses, enforcing `--delegate` for CLI posts, and aligning integration tests and documentation with the new command structure. Side B improves maintainability by auto-discovering all `test.*` namespaces in Kaocha, but it is a configuration convenience rather than a functional redesign affecting core project behavior.

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

Side A performs a genuine, substantial refactor: it decomposes a 1405-line monolithic forum.rs into cohesive, well-scoped submodules (feed, ingest, nav, page, paginator, post_single, profile, thread_morph, views) with clear public/private exports, fixing a module ambiguity bug and improving long-term maintainability. Side B is a small, useful config simplification (auto-discovering test namespaces instead of hand-enumerating them) but is a much smaller, lower-stakes change with less code-organization impact.

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

A removes a conflicting 1400-line duplicate forum.rs and lands a real module layout (forum/mod.rs plus feed, views, paginator, thread_morph, etc.), fixing Rust module-root ambiguity and making the forum HTML surface maintainable. B only rewrites tests.edn to a single ^test\\..+ suite—useful auto-discovery hygiene, but a small config change with far less lasting structural impact than A’s module split.

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

Side A removes the duplicate `server/src/html/forum.rs` monolithic module and establishes `forum/mod.rs` as the single module root, with code split into focused files such as `feed.rs`, `views.rs`, `thread_morph.rs`, and `page.rs`. This resolves module ambiguity while preserving functionality and leaves a cleaner, maintainable module structure; Side B is a useful maintenance improvement that replaces hand-enumerated Kaocha test namespaces with an auto-discovered `^test\..+` suite, but it affects test configuration rather than the application's architecture.

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

Side A is a small, concrete fix that removes a real maintenance hazard (manually enumerated test namespaces going stale) and verifiably keeps CI working, delivering immediate lasting value. Side B is almost entirely a speculative planning document (plan.md) with a thin, unfinished RouteContext wrapper that duplicates ThreadNav without migrating any call sites, so its actual code contribution is minimal and mostly aspirational.

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

A lands a complete, permanent fix: one `^test\..+` suite so new tests (e.g. ranking) run without hand-editing `tests.edn`. B mostly adds ephemeral `plan.md` plus a thin `RouteContext` newtype over `ThreadNav` with no call-site migration or `ItemId` work, so little lasting product value ships yet.

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

Side A replaces manually enumerated Kaocha test suites with a single auto-discovered `:all` suite using `^test\..+`, so new `test.*` namespaces run automatically without updating `tests.edn`, reducing ongoing maintenance and preventing missed tests. Side B mostly adds a large planning document plus a thin `RouteContext` wrapper around `ThreadNav` with re-exports and forwarding methods, which establishes an abstraction but introduces little immediate functional change.

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

Side B adds actual user-facing functionality (surfacing connectivity stats in CLI output) with accompanying unit tests, providing concrete lasting value. Side A is a small config simplification that improves maintainability but is lower-impact and riskier (broad regex could unintentionally sweep in unrelated test namespaces).

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

B adds user-facing product value by surfacing existing connectivity stats in pair CLI output (density, components, comparisons-to-connect) with focused unit tests, directly helping voters see sparse/disconnected graphs. A only simplifies tests.edn to a single auto ns-pattern—useful maintainability, but a small config-only change with no runtime behavior for the product.

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

Side A replaces manually enumerated test namespaces with a single auto-discovered suite (`^test\..+`), eliminating ongoing maintenance and ensuring new tests run automatically in CI without editing `tests.edn`. Side B improves CLI usability by displaying existing connectivity statistics and adds unit tests for formatting, but it primarily exposes already-available data rather than changing core project behavior.

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

Side B makes a real architectural change: it introduces a RocksDB-backed entity store, replaces in-memory JSON storage with disk-backed storage, and switches event-log loading to a streaming replay to cut startup RAM, all wired through reducer/state/reddit modules with tests updated accordingly. Side A is a small, sensible but low-stakes config simplification (collapsing two kaocha suites into one glob pattern) that saves future test-registration effort but has negligible functional impact compared to B's storage/performance redesign, despite B's diff being noisy with vendored lockfiles/docs.

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

B adds a durable RocksDB-backed entity store, streams event-log replay so startup does not hold the whole log in RAM, and removes bulky Reddit JSON from GlobalTree—core runtime architecture. A only rewrites tests.edn ns-patterns to a single auto-discovered suite, a small config convenience with no product behavior change.

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

Side B introduces substantial new functionality: a RocksDB-backed durable storage crate, a new `EntityStore` that moves raw entity JSON out of in-memory state, and a streaming `EventLog::replay` API that replays events line-by-line instead of loading the entire log into memory, with corresponding integration changes across the server. Side A is a useful maintenance improvement that replaces hand-maintained Kaocha namespace lists with a single auto-discovered `^test\..+` suite, reducing future configuration work, but its impact is much narrower.

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

Side B fixes a real off-by-one bug (thread_post_index was incorrectly 1-indexed with a fallback masking missing entries) with corrected docs and new regression tests covering the exact indices, giving lasting correctness value. Side A is a useful but purely mechanical config simplification (collapsing two hand-listed kaocha suites into a wildcard pattern) with no bugfix and lower risk/benefit.

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

B fixes real product correctness: thread_post_index is aligned to 0-based /t/tag/N routes, silent unwrap_or(0) fallbacks become hard expects, the garden link is always emitted, and integration assertions lock the contract. A only collapses hand-enumerated kaocha ns-patterns into one ^test\..+ suite—a useful test-ops cleanup, but not a lasting behavioral fix.

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

Side B fixes a semantic inconsistency by making `thread_post_index` consistently 0-based for rank history, replacing silent `unwrap_or(0)` fallbacks with `expect(...)` to enforce an invariant, updating documentation, rendering, and adding integration tests that verify the behavior. Side A improves maintainability by replacing manually enumerated Kaocha test namespaces with a single auto-discovered `^test\..+` suite, but it is primarily a test configuration simplification rather than a functional correctness change.

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

Side A is a small, well-explained fix that removes duplicated, hand-maintained test-suite config and replaces it with a self-maintaining pattern, with clear rationale tied to a real need (new test namespace auto-discovery). Side B's commit message ('more seed') gives no context for a large, disorganized dump of unrelated new files (Dockerfile, fly.toml, deps.edn, Rust event-log/view-store modules) with no explanation of intent or integration, making its lasting value and correctness hard to assess.

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

B adds foundational runtime and deploy pieces (event_log.rs append/load, ViewStore persistence, Dockerfile, fly.toml, deps.edn) that define how the app runs and ships. A only rewrites tests.edn to a single auto-discovered suite—useful hygiene, but a small config change with far less lasting product impact.

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

Side B adds substantial new infrastructure and functionality: a Docker-based build/deployment path, Clojure dependency configuration for testing, a persistent JSONL event log with append/load APIs and error handling, deployment configuration (fly.toml), and a persistent view-count store with asynchronous flushing. Side A improves test maintenance by replacing manually enumerated Kaocha suites with automatic discovery of all `test.*` namespaces, which is a useful long-term simplification but narrower in scope and impact than the new runtime capabilities introduced in Side B.

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

Side B adds a substantial, functional Reddit API client with rate limiting, typed response structs, and custom deserializers—new working functionality that the project can build on. Side A is a small, useful config simplification (kaocha test discovery), but its scope and impact are much narrower than a full client module, even though it is cleaner and better-described than B's terse commit message.

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

B adds a full Reddit API client (rate limiting, typed post/comment models, response helpers) that is substantive new capability, whereas A only rewrites tests.edn to a single auto-discovered suite—a useful but small maintainability tweak. Line count alone does not decide it; B’s patch is real product surface with lasting structure, not churn.

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

Side A makes the project's test configuration self-maintaining by replacing hand-enumerated test namespaces with a single auto-discovered `^test\..+` suite, ensuring new tests run automatically without updating `tests.edn` and reducing future maintenance. Side B adds a large new `reddit.rs` client and data model, but the patch only introduces a standalone file with no visible integration into the project, so its lasting project impact is less certain from the changes shown.

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

Side B implements a real end-to-end feature (CLI 'room create' command, RPC handler, event/reducer simplification removing unused visibility field, plus updated tests/docs) that adds functional capability and simplifies the room model. Side A is a useful but small config change (kaocha test discovery), which is convenient but far lower in scope, complexity, and lasting design impact compared to B's cross-cutting feature and cleanup work.

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

B delivers a real product path (CLI `room create`), simplifies the domain by dropping ThreadVisibility/RoomState and making rooms a HashSet, and wires that through RPC, reducer, events, tests, and docs. A only rewrites tests.edn ns-patterns so suites auto-discover—useful maintenance, but far less lasting product and design impact.

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

Side B adds a substantive end-to-end feature by introducing a `room create` CLI command, wiring it through the RPC path, updating the server to handle the simplified `RoomCreate { slug }` API, and adjusting tests and documentation accordingly. Side A improves test infrastructure by replacing manually enumerated Kaocha test suites with automatic `^test\..+` discovery, which reduces maintenance, but its impact is narrower than the new user-facing capability and associated API simplification in Side B.

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

Side B fixes a real functional bug (Reddit children imports bypassing ensure_path and unranked labels showing raw IDs instead of titles) with corresponding source changes across multiple modules plus updated integration tests, delivering concrete lasting behavior fixes. Side A is a small config-only simplification of test discovery (tests.edn) that improves maintainability but has no functional or bug-fixing impact.

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

B fixes real product behavior: Reddit children import now attaches entities under the parent without ensure_path side effects, and unranked labels resolve titles from the tree instead of bare ids, with matching API/HTML call-site and integration-test updates. A only rewrites tests.edn to a single auto ns-pattern—useful DX hygiene, but no runtime or correctness impact comparable to B’s wiring and UI fixes.

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

Side B fixes functional behavior in multiple places: it corrects Reddit child imports by attaching imported entities under the intended parent without path expansion, updates the ranking panel to display imported child titles using tree data, and adds integration test coverage for both self and children fetch flows. Side A improves test configuration by replacing manually enumerated Kaocha suites with automatic discovery, reducing maintenance, but it is primarily a tooling/configuration improvement rather than a runtime correctness fix.

comparison · c_28dfd8015c8a (tommy-mor) vs c_c42f908efc44 (tommy-mor)
~anthropic/claude-sonnet-latest · winner B · 3:2 · permalink

Side B is a substantive type-safety refactor threading CanonicalItemUrl through resolve_item, pair selection, rank-change computation, and validation, eliminating repeated ad-hoc String/CanonicalItemUrl wrapping and adding Deref impls plus a new test — real reduction of bug surface across multiple files. Side A is a useful but tiny config simplification (one glob pattern replacing enumerated namespaces) with no code or test logic changes, offering less lasting engineering value despite solving a real discoverability problem.

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

B threads CanonicalItemUrl through resolve_item, validation, ranking, and pair RPC and adds Deref on href newtypes, removing repeated String wrap/parse noise and hardening the domain model across helpers, rpc, and validate. A only rewrites tests.edn to a single ns-pattern suite—useful auto-discovery hygiene, but a small config change with far less lasting design impact.

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

Side B makes a broad, lasting type-safety improvement by changing `resolve_item` to return `CanonicalItemUrl` instead of `String`, propagating that typed representation through validation, ranking, RPC handling, and connectivity logic while eliminating repeated parsing and string wrapping. Side A improves developer workflow by replacing manually enumerated Kaocha suites with a single auto-discovered `test\..+` suite, but this is a configuration convenience rather than a core design improvement.

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

Side A removes duplicate/dead code paths (ExpandNewThreadForm action, its dispatch handler, and tests) and consolidates the home page to reuse the same SSR compose slot as room pages, simplifying the codebase with a real behavioral unification. Side B is a useful but minor config simplification (auto-discovering test namespaces instead of hand-listing them) that reduces future maintenance friction but has no functional code impact and carries some risk of accidentally picking up unintended test namespaces.

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

A removes a full UI action path (ExpandNewThreadForm handler, enum variant, and the home toolbar POST+) and SSRs #new-thread-ui-slot like room pages, fixing real UX inconsistency and dead complexity. B only rewrites tests.edn to one auto ns-pattern—useful DX hygiene, but a small config change with no product or runtime impact.

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

Side A simplifies the UI architecture by removing the `ExpandNewThreadForm` action and its server-side handler, instead server-rendering the `#new-thread-ui-slot` directly on the home page with the same collapsed compose/login-hint behavior used elsewhere. This eliminates duplicated flow and dead RPC parsing/tests while making public home consistent with room pages. Side B improves test maintenance by auto-discovering `test.*` namespaces, but it is a build-configuration convenience rather than a functional or architectural improvement.

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

Side B implements a substantive feature (Reddit post rendering with image/link extraction, new render module, CSS, and a unit test with fixture) that adds real, tested functionality. Side A is a small, useful test-config simplification, but it's a minor config tweak compared to B's meaningful feature work despite B's terse commit message.

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

B adds lasting product value: EntityData gains image_url/link_url, Reddit parsing extracts them, and a new render/reddit module plus CSS delivers thumbnail rows and post detail cards, with a fixture-backed unit test. A only collapses hand-enumerated kaocha suites into one ns-pattern in tests.edn—helpful hygiene, but no user-facing behavior or durable domain logic.

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

Side B adds lasting functionality by introducing Reddit-specific rendering, extending EntityData with image/link metadata, extracting preview and outbound URLs during Reddit parsing, wiring new UI components into ranking and entity views, and adding a regression test with a fixture. Side A simplifies Kaocha configuration by replacing manually enumerated test namespaces with automatic discovery, which improves maintainability but is a much smaller infrastructure change.

comparison · c_28dfd8015c8a (tommy-mor) vs c_939729b4d9a6 (tommy-mor)
~anthropic/claude-sonnet-latest · winner A · 3:2 · permalink

Side A is a small, self-contained, clearly correct improvement to test infrastructure that removes brittle manual suite enumeration and is documented well. Side B's diff, despite touching more files, includes churn (Cargo.lock dependency bumps), an uninformative 'fix' message, and references a new `html::vote` module (`pub mod vote;`, `vote::vote_page`, `vote::vote_href`) whose actual file contents are absent from the diff, suggesting an incomplete/inconsistent commit that would not build on its own.

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

B delivers substantial product value: typed $form:i32 holes, RecordVote next-navigation, a /vote compare flow (route, CSS, slider JS, item-page CTA), and supporting deps/tests. A only rewrites tests.edn to a single auto-discovered suite—useful hygiene, but config-only and far smaller lasting impact.

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

Side A replaces manually enumerated Kaocha test suites with a single auto-discovered `:all` suite using `^test\..+`, eliminating ongoing maintenance and ensuring new `test.*` namespaces are automatically executed in both local runs and CI. Side B adds many dependencies and introduces vote-related functionality, but the visible changes are broad and partly infrastructural, while much of the patch is lockfile churn without enough context to assess the lasting value of the new feature.

comparison · c_28dfd8015c8a (tommy-mor) vs c_c124c217f89c (tommy-mor)
~anthropic/claude-sonnet-latest · winner B · 3:1 · permalink

Side B implements a substantial, functional feature (a real Reddit fetch worker with OAuth, rate-limit backoff, dedup, JSON parsing, and unit tests) that provides real lasting functionality wired into the app state and HTML handler. Side A is a useful but small config simplification (collapsing two kaocha suites into one glob pattern), which is a low-risk convenience change with much less substance and no new tested behavior.

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

B implements a full Reddit fetch pipeline (broker, OAuth, rate-limit/backoff, JSON parsing, tree integration, and tests), turning a stub into working product behavior. A only rewrites tests.edn to a single auto-discovery suite—useful hygiene, but a small config change with far less lasting system impact.

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

Side B implements substantial new functionality: a background Reddit import system with request queuing, OAuth support, rate-limit handling, JSON parsing, integration into application state and request flow, plus unit tests for URL mapping and parsing. Side A only changes Kaocha configuration from manually enumerated test namespaces to a single auto-discovered suite, which improves maintainability but does not add comparable runtime capability.

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

A is a small, clearly-explained config fix that removes real maintenance friction (new test files no longer need manual registration) and is low-risk and self-contained. B is a large refactor with a vague message ('url stuff'), deletes the old engine and its inline tests but the patch shown never introduces the new graph.rs/parse.rs modules it depends on, leaving the actual replacement logic unverifiable and the commit's completeness in doubt.

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

B replaces the hand-rolled URL combinator stack (engine.rs + per-host normalize_* in registry) with a semantic graph/DFA design that becomes the lasting ItemId canonicalization core, including hierarchy/breadcrumbs. A only shrinks tests.edn to one auto ns-pattern suite—useful maintenance hygiene, but far smaller and less foundational than the URL rewrite.

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

Side B replaces the URL canonicalization architecture by removing the old rule engine, introducing a graph- and parser-based implementation, updating the public registry API to use it, and reorganizing tests into a dedicated module. In contrast, Side A is a useful maintenance improvement that simplifies Kaocha configuration by auto-discovering all `test.*` namespaces, but it changes only test discovery behavior rather than core project functionality.

comparison · c_28dfd8015c8a (tommy-mor) vs c_509fc5155034 (tommy-mor)
~anthropic/claude-sonnet-latest · winner B · 6:1 · permalink

Side B is a substantial architectural refactor (settlement -> journal, flat scope map -> hierarchical GlobalTree, ItemId path parsing/canonicalization, breadcrumb UI, entity data) with corresponding tests and real feature capability additions. Side A is a small, useful but minor kaocha config simplification (two suites -> one glob pattern) with no code or behavioral change beyond test discovery.

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

B replaces flat string scopes with a hierarchical ItemId/GlobalTree model (path canonicalization, breadcrumbs, journaled votes, NodeEnsured events, UI/entity panels)—core lasting domain architecture. A only collapses hand-listed kaocha suites into one ns-pattern in tests.edn, a useful but narrow test-runner convenience.

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

Side B implements a substantial architectural shift from flat subreddit scopes to a hierarchical `ItemId`/`GlobalTree` model, updating vote recording, event replay, URL parsing, UI navigation (breadcrumbs, entity panels, links), and persistence with new journal and tree infrastructure. Side A improves maintainability by replacing manually enumerated Kaocha test namespaces with automatic `^test\..+` discovery, but it is limited to test configuration rather than core project behavior or architecture.

comparison · c_28dfd8015c8a (tommy-mor) vs c_477013996fa5 (tommy-mor)
~anthropic/claude-sonnet-latest · winner B · 3:1 · permalink

Side B is a substantial feature commit: it adds real post-vote preview morphing, sorted edge-history rendering, a new fullscreen layout mode with CSS across three themes, updated tests/assertions, and documentation—concrete lasting functionality. Side A is a small, useful config simplification (kaocha auto-discovery) but is much narrower in scope and impact than B's multi-file feature work.

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

B delivers real product behavior: fullscreen chromeless compare layout, correct left/right ratio orientation and strength sorting for edge history, post-success morph of the new ingest card, multi-theme CSS, and unit/browser test updates. A only collapses hand-enumerated kaocha ns lists into one `^test\..+` suite—a useful but small config hygiene change with far less lasting surface area.

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

Side B delivers substantial functional improvements to the vote-compare feature: it adds a reusable chromeless layout, updates the POST success flow to morph a preview card and refreshed history, normalizes and sorts vote ratios for display, adjusts UI/CSS, and adds unit/browser test coverage for the new behavior. Side A is a useful maintenance improvement that replaces manually enumerated Kaocha suites with automatic test namespace discovery, reducing future configuration work, but it is a much narrower infrastructure change.

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

B is a substantive refactor that unifies vote-compare card rendering with the entity-section component and fixes duplicate-id bugs (multiple elements sharing `#entity-section`/`#entity-panel`) by introducing per-item selectors, reducing code duplication and CSS. A is a small, useful test-config change but is narrowly scoped to CI/test discovery convenience with no functional code impact; B's changes affect real runtime rendering correctness across multiple files.

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

B replaces a single global #entity-section id with per-item data-entity-section selectors and reuses entity_section in the vote compare UI, removing duplicated markup/CSS and enabling correct multi-entity morphing. A only simplifies tests.edn ns-patterns so new suites auto-discover—useful hygiene, but far less lasting product design impact than B’s unified entity rendering.

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

Side B makes a functional architectural improvement by introducing per-entity selectors (`data-entity-section` plus `entity_section_selector`) so SSE/Idiomorph updates target the correct entity instead of a single global `#entity-section`, and it reuses the shared `entity_section` renderer in the voting UI to eliminate duplicated rendering logic. Side A improves test maintainability by replacing manually enumerated Kaocha suites with automatic `^test\..+` discovery, which reduces future configuration work, but its impact is narrower than the UI update and code reuse changes in Side B.

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

Side B performs substantial, correct deduplication of duplicated HTTP/OAuth helpers and pass/fail harness code across four test files into test/common.bb and test/oauth.bb, reducing maintenance burden and bug-fix surface (e.g. consistent timeouts, unified mock-google logic). Side A is a small, useful config simplification (tests.edn glob) but is a single one-line-pattern change with lower overall impact and risk (e.g. auto-picking up unintended namespaces) compared to B's broader, well-executed refactor.

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

B removes large stretches of duplicated HTTP client, mock-Google OAuth, assert/ANSI harness, cargo-build, and server-env code from auth/grants/integration into shared test.common and test.oauth (including complete-registration! and parameterized start-mock-google), which is lasting test-infrastructure design. A’s single tests.edn auto-discovery suite is a clean, useful config fix so new namespaces run without edits, but it is a much smaller change in scope and depth than B’s consolidation.

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

Side B extracts substantial duplicated test infrastructure into shared utilities (`test.common` and `test.oauth`), adding reusable helpers such as `run-cargo-build-release!`, `slug-server-env`, `complete-registration!`, configurable mock Google OAuth, and centralized assertion/output logic while updating multiple test suites to use them. Side A improves Kaocha configuration by replacing manually enumerated test namespaces with a single auto-discovered suite, which reduces maintenance, but its impact is confined to test discovery rather than broadly improving the test architecture.

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

Side B refactors cli_panel into a single reusable multi-row component with hover/copy UX, adds a defensive assertion preventing broken JS from unescaped quotes, and updates CSS consistently across two themes — a genuine, multi-file feature/bugfix improvement. Side A is a useful but very small config simplification (tests.edn) that reduces duplication but has minimal code surface and no behavioral guarantees beyond auto-discovery.

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

B redesigns a shared UI primitive (cli_panel) to accept grouped commands, makes each row click-to-copy, and adds JS single-quote safety asserts, with coordinated call-site and theme updates—lasting product behavior. A only collapses hand-enumerated kaocha ns lists into one ^test\\..+ suite in tests.edn; useful auto-discovery hygiene, but a small config change without comparable runtime or UX impact.

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

Side A replaces manually enumerated Kaocha test suites with a single auto-discovered `^test\..+` suite, eliminating ongoing maintenance and ensuring new test namespaces run automatically without editing `tests.edn`. Side B improves the CLI panel UI by grouping commands, adding click-to-copy rows, and asserting JavaScript-safe command strings, but those are primarily usability and presentation enhancements rather than a project-wide maintenance improvement.

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

Side A fixes real application behavior (correct sibling-grouping logic for unranked items) and adds a targeted regression test validating the new grouping semantics. Side B is a useful but narrow CI/test-config simplification (collapsing two enumerated kaocha suites into one glob-based suite) with no logic or test coverage changes, and even introduces a stray indentation inconsistency in the edn file.

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

A fixes real sibling-nav behavior (each unranked item becomes its own group) and locks it in with a focused regression test; that is lasting product/UI correctness. B only simplifies tests.edn from hand-listed suites to one ns-pattern—helpful DX, but config hygiene with less direct lasting impact than A’s behavior change.

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

Side A changes application behavior by treating each unranked sibling as its own navigation group instead of aggregating all unranked items together, matching the documented grouping semantics, and it adds a regression test covering the new behavior. Side B improves test configuration by auto-discovering all test namespaces, reducing maintenance overhead, but it does not change the project's runtime behavior.

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

B delivers a substantive dev-workflow improvement (cargo-watch integration, persistent fixture data with reuse/rebasing logic, preferred-port fallback) that meaningfully improves developer iteration speed, though it bundles in an unrelated/likely unintentional HTML removal from forum.rs. A is a clean, minimal, well-justified config simplification (kaocha auto-discovery) that reduces future maintenance friction but is much smaller in scope and impact.

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

A replaces brittle hand-enumerated kaocha suites with a single ^test\\..+ auto-discovery pattern, so new test namespaces run in CI and TEST.sh without further config edits—a small, lasting test-infra design fix. B improves local DX (cargo-watch, persistent fixture-data/, preferred port) and drops a bit of redundant room_page markup, but that value is mostly ergonomic tooling rather than project-wide correctness.

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

Side B adds durable developer infrastructure: the walkthrough fixture now uses persistent `fixture-data/`, prefers a stable port with fallback via `pick-port-prefer`, runs through `cargo watch`, reuses seeded data when available, and updates URLs when reloading, substantially improving iterative development. Side A simplifies Kaocha configuration by replacing manually enumerated test namespaces with a single auto-discovered `^test\..+` suite, reducing maintenance and ensuring new tests run automatically, but its scope is narrower than the broader workflow improvements in Side B.

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

B is a substantive refactor that splits a monolithic forum.rs into cohesive modules (nav, ingest, new_thread, room_members, access) plus adds a genuinely useful sampling script, improving maintainability at real scale. A is a small, useful but narrow config simplification (kaocha test discovery) that reduces boilerplate but touches only one file with modest lasting impact.

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

B’s split of forum HTML into focused modules (nav, ingest, access, room_members, new_thread) is a lasting structural improvement to core server code, despite some helper inlining and an ancillary sample-fixture script. A only rewrites tests.edn to a single ^test\\..+ suite—useful automation, but a narrow config change with far less enduring product impact.

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

Side A replaces a fragile hand-maintained list of test namespaces with a single auto-discovered `:all` Kaocha suite using `^test\..+`, so new `test.*` files are automatically executed without editing `tests.edn`, reducing ongoing maintenance and preventing missed tests. Side B is largely a structural refactor that moves forum code into new modules and adds a macOS-specific profiling helper (`sample-fixture`), which improves organization and tooling but introduces little new core project behavior.

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

Side A is a small, precise, necessary fix that unifies test discovery so new test namespaces run automatically, directly reducing future maintenance friction. Side B, despite a large diff, is a mislabeled/unclear commit ('nice') that deletes a legacy Rust parser file while duplicating nearly identical logic into a new server/src/parser.rs plus large amounts of new speculative UI/parser-panel code with no clear indication of being finished, tested against real requirements, or reviewed—representing churn and scope creep rather than a focused, lasting improvement.

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

Side B integrates the full Reddit URL parser graph into the live server (new parser_action/parser_render modules, /ui ParseQuery wiring, home-panel morph, debounced JS input/Tab completion, and integration/smoke tests), turning legacy code into a working product surface; Side A only rewrites tests.edn ns-patterns for auto-discovery, a small useful hygiene change with far less lasting scope.

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

Metadata
commit_idc_28dfd8015c8a87720de83feb8876894bd87331f66630158648cea6631d4877d0
patch_sha25660da2302bffff8302ec8b1d20ea2cbeb9db40deb6c1bccc80c0bacf564b86655
patch_identitygit-patch-id-stable-v1:2296d8af6c7133504c98abc956ccab6dbfa29fb2
committer_timestamp_ms1779568474000