constitution · epochs · watch · epoch 3

comparison

c_88200cfa5c4d (tommy-mor) vs c_bd76779bd7ed (tommy-mor)

download prompt · raw event · cmp_28dcc2e8dea58e

council reasoning

~anthropic/claude-sonnet-latest · winner A · 8:1 · permalink

Side A fixes a genuinely broken test (missing #[test] attribute meant the test never ran), cleans up clippy warnings across multiple files, and adds a documented dead_code allowance for shared test helpers—concrete, verified improvements to code quality. Side B is a one-line tweak changing a disabled span into an anchor tag with a dead '#' href, a trivial and arguably questionable change with minimal lasting value.

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

A enables a previously dead ui_action test with #[test], plus targeted clippy/hygiene fixes (let-else patterns, is_some_and, dead_code allow on shared test helpers). B is a one-line markup swap of a disabled paginator control from span to a href="#", with no functional or design depth.

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

Side A mostly contains Clippy-driven cleanups, but it also fixes a substantive oversight by adding the missing #[test] attribute so a UI action test actually runs, and introduces a type alias to simplify a complex return type without changing behavior. Side B only changes the disabled paginator control from a <span> to an <a href="#"> element, a small UI/markup tweak with much narrower long-term impact.

sides

A — c_88200cfa5c4d (tommy-mor)

message

[10c9caac] Fix all workspace clippy warnings.

Wire up a missing ui_action test, allow dead code in shared integration helpers, and apply small clippy cleanups across server and types.

Co-authored-by: Cursor <cursoragent@cursor.com>

diff preview

diff --git a/server/src/dsl.rs b/server/src/dsl.rs
index a45c5b33e10d0d2ea48c7313061cfa1e6430bcfc..faa8aac6616bc6ea2b102d08ae999c01a716ef6e 100644
--- a/server/src/dsl.rs
+++ b/server/src/dsl.rs
@@ -927,9 +927,7 @@ mod tests {
     #[test]
     fn parse_vote_rejects_zero_zero_ratio() {
         let err = parse_full("{tie placeholder}\n~/a 0:0 ~/b").unwrap_err();
-        let msg = match err {
-            DslError::Parse(m) => m,
-        };
+        let DslError::Parse(msg) = err;
         assert!(
             msg.contains("0:0"),
             "expected 0:0 rejection message, got: {msg}"
diff --git a/server/src/html/garden/tests.rs b/server/src/html/garden/tests.rs
index c2036fca7752aef63d260e36cfe9649f63b5c550..0a1be1290fdc93197ca191197a473840bb4decbc 100644
--- a/server/src/html/garden/tests.rs
+++ b/server/src/html/garden/tests.rs
@@ -346,7 +346,7 @@ fn vote_compare_item_card_renders_github_import_markup() {
         "headline": "#1 Compare card",
         "sublines": ["State: open"],
     });
-    let body = format!("```slug-github-card\n{}\n```", json.to_string());
+    let body = format!("```slug-github-card\n{json}\n```");
     let html = vote_compare_item_card(
         &nav,
         &item,
diff --git a/server/src/html/ui_action.rs b/server/src/html/ui_action.rs
index 2589a2cc00bb7b18cd19ebcbb938083122d6921d..5e4131dd346a6f80bfe091a9b0cf7902721bc47f 100644
--- a/server/src/html/ui_action.rs
+++ b/server/src/html/ui_action.rs
@@ -246,6 +246,7 @@ mod tests {
         );
     }
 
+    #[test]
     fn set_new_thread_compose_expanded_true() {
         let template = serde_json::json!({
             "action": "set_new_thread_compose_expanded",
diff --git a/server/src/offline.rs b/server/src/offline.rs
index 2db6f67e22e00a24ce673d13095644dd9fa9342d..93d4d5ee55449da644f732bc0ba007ee4c2c7079 100644
--- a/server/src/offline.rs
+++ b/server/src/offline.rs
@@ -167,7 +167,7 @@ fn rankings_for_simulated(
         .iter()
         .map(|parent| {
             let scoped_content = simulated
-                .content_for_scope(&scope)
+                .content_for_scope(scope)
                 .unwrap_or_else(|| simulated.public());
             let scoped = build_children_rankings(scoped_content, parent);
             let components: Vec<RankComponent> = scoped
@@ -254,7 +254,9 @@ fn ingest_parse_error(raw: &str) -> Option<String> {
     dsl::parse_full(raw).err().map(|e| e.to_string())
 }
 
-fn load_events_from_jsonl(path: &Path) -> Result<(usize, Vec<(usize, Event)>, Vec<BadJsonLine>), std::io::Error> {
+type JsonlEventsLoad = Result<(usize, Vec<(usize, Event)>, Vec<BadJsonLine>), std::io::Error>;
+
+fn load_events_from_jsonl(path: &Path) -> JsonlEventsLoad {
     let text = std::fs::read_to_string(path)?;
     let total_lines = text.lines().count();
     let mut events = Vec::new();
diff --git a/server/src/resolvers/github.rs b/server/src/resolvers/github.rs
index 30dd4cdac96de0e3da4fa03fdf82f91bed73bfe0..3cec5e8b7249a4597c378890cc9e6125104e76c3 100644
--- a/server/src/resolvers/github.rs
+++ b/server/src/resolvers/github.rs
@@ -749,6 +749,6 @@ mod tests {
             GithubImportKind::Issue,
         );
         assert!(card.sublines.iter().any(|l| l.contains("@octo")));
-        assert_eq!(card.excerpt.as_deref(), Some("The issue body.").as_deref());
+        assert_eq!(card.excerpt.as_deref(), Some("The issue body."));
     }
 }
diff --git a/server/tests/basic.rs b/server/tests/basic.rs
index 31a35251a8abd6f4a48c1d7782b6985f621375e1..9d83e7a97e2c7494790db17c4b5b30c181705026 100644
--- a/server/tests/basic.rs
+++ b/server/tests/basic.rs
@@ -337,7 +337,7 @@ async fn event_log_handles_corrupt_lines() {
         .unwrap();
 
     // Add empty line.
-    writeln!(f, "").unwrap();
+    writeln!(f).unwrap();
 
     let (loaded, bad) = log.load_all().await.unwrap();
     assert_eq!(loaded.len(), 2);
@@ -511,9 +511,7 @@ fn dsl_parse_rejects_zero_zero_vote_ratio() {
         "~/t/a {a}\n~/t/b {b}\n{zero}\n~/t/a 0:0 ~/t/b\n",
     )
     .expect_err("0:0 vote must be rejected by the parser");
-    let msg = match err {
-        slugsocial_server::dsl::DslError::Parse(m) => m,
-    };
+    let slugsocial_server::dsl::DslError::Parse(msg) = err;
     assert!(
         msg.contains("0:0"),
         "expected message about invalid 0:0 ratio, got: {msg}"
@@ -904,7 +902,7 @@ fn posts_by_actor_indexes_and_profile_visibility() {
 fn feed_query(state: &ReducerState, cutoff: i64, limit: usize) -> (usize, Vec<String>) {
     let matching: Vec<&str> = state.ingests_ordered.iter().rev()
         .map(|id| id.as_str())
-        .take_while(|id| state.ingests_by_id.get(*id).map_or(false, |ing| ing.ts > cutoff))
+        .take_while(|id| state.ingests_by_id.get(*id).is_some_and(|ing| ing.ts > cutoff))
         .filter(|id| {
             state.ingests_by_id.get(*id).is_some_and(|ing| {
                 let scope = slugsocial_server::reducer::scope_from_room_wire(&ing.room_id);
diff --git a/server/tests/integration_health.rs b/server/tests/integration_health.rs
index 481222d8c48c44fcfb7e9ba26cf7644b5c26d5f4..351aae6b0e9738021886a076ee08fab5cf5a0001 100644
--- a/server/tests/integration_health.rs
+++ b/server/tests/integration_health.rs
@@ -7,7 +7,7 @@ async fn test_healthz() {
     let (addr, _tmp, _log, _handle) = create_test_server().await;
     let client = reqwest::Client::new();
     let response = client
-        .get(&format!("http://{}/healthz", addr))
+        .get(format!("http://{}/healthz", addr))
         .send()
         .await
         .unwrap();
diff --git a/server/tests/integration_rpc.rs b/server/tests/integration_rpc.rs
index ccd89a02594bd2a8e7047edafca04b0e54384139..ec446d94a38c8d6961d2135dd031da7ab2a39b48 100644
--- a/server/tests/integration_rpc.rs
+++ b/server/tests/integration_rpc.rs
@@ -440,7 +440,6 @@ async fn test_rank_history() {
     let bearer = test_bearer();
     let ingest = |delegate: &str, text: &str| {
         let client = client.clone();
-        let addr = addr;
         let bearer = bearer.clone();
         let text = text.to_string();
         let delegate = delegate.to_string();
diff --git a/server/tests/support/mod.rs b/server/tests/support/mod.rs
index 84dc1d68b6c1e1fdfdbd0757139c06c3daf1e9a6..4a620eaa875e7a1145f2a4e82cc4ff2be21d5345 100644
--- a/server/tests/support/mod.rs
+++ b/server/tests/support/mod.rs
@@ -1,3 +1,6 @@
+//! Shared helpers for integration tests; each test binary uses a different subset.
+#![allow(dead_code)]
+
 use sha2::{Digest, Sha256};
 use slugsocial_server::{
     event_log::EventLog,
diff --git a/types/src/paths.rs b/types/src/paths.rs
index ebc299c5e1af456c3e4b7fa45ed9fb23313e88c4..d2e799942b98dd7342764475deb17903fb60c600 100644
--- a/types/src/paths.rs
+++ b/types/src/paths.rs
@@ -411,7 +411,7 @@ mod tests {
     #[test]
     fn garden_item_url_deref_to_str() {
         let g = GardenItemUrl::from_storage_str("https://slug.social/~/x", "public");
-        let s: &str = &*g;
+        let s: &str = &g;
         assert_eq!(s, "https://slug.social/~/x");
     }
 

download full diff A

B — c_bd76779bd7ed (tommy-mor)

message

[22b97b71] type

diff preview

diff --git a/server/src/html/forum.rs b/server/src/html/forum.rs
index f1114562c8c0196f78a008028b46d1fda57479f9..493b7596a1d334b174ee9916571446d14507ec97 100644
--- a/server/src/html/forum.rs
+++ b/server/src/html/forum.rs
@@ -665,7 +665,7 @@ fn render_thread_paginator(nav: &ThreadNav, tag: &str, offset: usize, total: usi
             @if let Some(o) = newer_offset {
                 a href=(nav.thread_page_url(tag, o)) class="post-nav-btn" { "newer →" }
             } @else {
-                span class="post-nav-btn disabled" { "newer →" }
+                a href="#" class="post-nav-btn disabled" { "newer →" }
             }
             @if !on_latest {
                 a href=(nav.thread_page_url(tag, latest_offset)) class="post-nav-btn" { "latest" }

download full diff B

Hardlinks — judgments / attempts / prompt

prompt download

judgments

attempts

Prompt text is loaded only by the download route.