Skip to main content

max / goingson

Apply clippy pedantic fixes across go-mcp
Co-Authored-By
Claude Opus 5 (1M context) <noreply@anthropic.com>
Author: Max Johnson <me@maxj.phd> · 2026-07-26 13:35 UTC
Signed with PGP, not checked
Commit: 51bedef2b8e2d8e1af8d5b32ff182c91501bf0e9
Parent: 4fdb6d9
4 files changed, +17 insertions, -18 deletions
@@ -56,9 +56,8 @@
56 56 let base = home.join("Library/Application Support");
57 57
58 58 #[cfg(not(target_os = "macos"))]
59 - let base = std::env::var_os("XDG_DATA_HOME")
60 - .map(PathBuf::from)
61 - .unwrap_or_else(|| home.join(".local/share"));
59 + let base =
60 + std::env::var_os("XDG_DATA_HOME").map_or_else(|| home.join(".local/share"), PathBuf::from);
62 61
63 62 Some(base.join("com.goingson.app").join("goingson.db"))
64 63 }
@@ -51,7 +51,7 @@
51 51 "--port" => {
52 52 port = next(&mut it, "--port")?
53 53 .parse()
54 - .map_err(|_| "--port must be a number".to_string())?
54 + .map_err(|_| "--port must be a number".to_string())?;
55 55 }
56 56 "--grant" => {
57 57 grants.insert(next(&mut it, "--grant")?);
@@ -109,10 +109,10 @@
109 109
110 110 #[async_trait]
111 111 impl Tool for ListProblems {
112 - fn name(&self) -> &str {
112 + fn name(&self) -> &'static str {
113 113 "list_problems"
114 114 }
115 - fn description(&self) -> &str {
115 + fn description(&self) -> &'static str {
116 116 "List problems, most urgent first. A problem is a candidate for work pulled from a source (wam tickets, audit and fuzz findings); it is not a task until promoted. Ranked by `painhours`, a 0-100 score computed from pain, scale, and age, so an untriaged problem climbs on its own. Filters: `source`, `status` (Open|Promoted|Dismissed|Resolved), `project_id`. Defaults to Open only; pass status explicitly to see settled ones."
117 117 }
118 118 fn kind(&self) -> ToolKind {
@@ -184,10 +184,10 @@
184 184
185 185 #[async_trait]
186 186 impl Tool for ReportProblems {
187 - fn name(&self) -> &str {
187 + fn name(&self) -> &'static str {
188 188 "report_problems"
189 189 }
190 - fn description(&self) -> &str {
190 + fn description(&self) -> &'static str {
191 191 "Report findings as problems (the /audit and /fuzz primitive). Each item: {title, body?, pain?, scale?, source_ref?, project?, tags?, resolved?}. `pain` (how much it hurts a hit user) and `scale` (how broadly it hits) are 1-5, defaulting to 3, and together with age drive the painhours ranking. `source` names the lens (audit, fuzz, deepaudit) and `source_ref` identifies the finding within it; re-reporting the same pair updates that problem instead of duplicating it, and never undoes a promotion or dismissal. Reporting does NOT create tasks: use promote_problem for the ones worth working."
192 192 }
193 193 fn kind(&self) -> ToolKind {
@@ -325,10 +325,10 @@
325 325
326 326 #[async_trait]
327 327 impl Tool for PromoteProblem {
328 - fn name(&self) -> &str {
328 + fn name(&self) -> &'static str {
329 329 "promote_problem"
330 330 }
331 - fn description(&self) -> &str {
331 + fn description(&self) -> &'static str {
332 332 "Turn a problem into a task: creates the task, links it back to the problem, and marks the problem Promoted so it stops climbing the ranking. `description` defaults to the problem's title and body. The task inherits the problem's project and tags plus a `problem:<source>:<ref>` provenance tag. This is the only path from a problem to a task; reporting one never creates work on its own."
333 333 }
334 334 fn kind(&self) -> ToolKind {
@@ -428,10 +428,10 @@
428 428
429 429 #[async_trait]
430 430 impl Tool for UpdateProblemTool {
431 - fn name(&self) -> &str {
431 + fn name(&self) -> &'static str {
432 432 "update_problem"
433 433 }
434 - fn description(&self) -> &str {
434 + fn description(&self) -> &'static str {
435 435 "Update a problem's triage state or project. `status` is Open|Promoted|Dismissed|Resolved: Dismissed is the 'seen it, not acting' verdict, and Open sends a settled problem back to the inbox (clearing any task backlink). Prefer dismissing over deleting, so a re-pull does not resurrect something already ruled on. Use promote_problem to create a task; setting status Promoted here only marks it, without one."
436 436 }
437 437 fn kind(&self) -> ToolKind {
@@ -47,10 +47,10 @@
47 47
48 48 #[async_trait]
49 49 impl Tool for ListProjects {
50 - fn name(&self) -> &str {
50 + fn name(&self) -> &'static str {
51 51 "list_projects"
52 52 }
53 - fn description(&self) -> &str {
53 + fn description(&self) -> &'static str {
54 54 "List all projects (id, name, type, status). Use to resolve a project name to its id before creating tasks."
55 55 }
56 56 fn kind(&self) -> ToolKind {
@@ -90,10 +90,10 @@
90 90
91 91 #[async_trait]
92 92 impl Tool for CreateProject {
93 - fn name(&self) -> &str {
93 + fn name(&self) -> &'static str {
94 94 "create_project"
95 95 }
96 - fn description(&self) -> &str {
96 + fn description(&self) -> &'static str {
97 97 "Create a project. Idempotent on name: if a project with the same name exists, its id is returned instead of creating a duplicate. `type` is one of Job, SideProject, Company, Essay, Article, Painting, Other (defaults to SideProject)."
98 98 }
99 99 fn kind(&self) -> ToolKind {
@@ -168,10 +168,10 @@
168 168
169 169 #[async_trait]
170 170 impl Tool for UpdateProjectTool {
171 - fn name(&self) -> &str {
171 + fn name(&self) -> &'static str {
172 172 "update_project"
173 173 }
174 - fn description(&self) -> &str {
174 + fn description(&self) -> &'static str {
175 175 "Update an existing project, resolved by `project` (its name). Only the fields you pass change. `status` is Active|OnHold|Completed|Archived. Archived is the non-destructive way to retire a project. `type` is Job|SideProject|Company|Essay|Article|Painting|Other. Renaming is not offered: the name is how create_task and bulk_import_tasks resolve a project, so a rename would strand callers."
176 176 }
177 177 fn kind(&self) -> ToolKind {