Commit A fixes a real CI/toolchain conflict that was breaking musl builds, a concrete infrastructure bugfix with lasting impact on build reliability. Commit B is a minor API simplification removing an unused field, which is reasonable cleanup but smaller in scope and impact than resolving a broken CI pipeline.
constitution · epochs · watch · epoch 3
c_cf9abe91534d (tommy-mor) vs c_222c212e014d (tommy-mor)
download prompt · raw event · cmp_3f67a4942d6a8d
council reasoning
B permanently simplifies the wire protocol, types, and CLI by excising the agents_bound field and its binding-count computation from WhoamiResponse, yielding a cleaner identity contract. A merely deletes a 3-line rust-toolchain.toml pin to dodge a CI override, which is useful tooling hygiene but does not alter project behavior or design.
Side B makes a coherent API change by removing the `agents_bound` field from the shared `WhoamiResponse` type, the server response, and the CLI output, simplifying the wire protocol and eliminating now-unneeded computation. Side A only deletes the `rust-toolchain.toml` pin to avoid toolchain conflicts, which is useful for development and CI configuration but is a narrower infrastructure change.
sides
A — c_cf9abe91534d (tommy-mor)
message
[fa8e05ae] chore: drop rust-toolchain.toml; rely on mise for local Rust pin Removing the file avoids rustup overriding CI to an older toolchain than dtolnay installs, which broke musl targets. The release workflow keeps dtolnay/rust-toolchain stable plus matrix targets only. Made-with: Cursor
diff preview
diff --git a/rust-toolchain.toml b/rust-toolchain.toml deleted file mode 100644 index 7855e6d557c0d29ac368603b23807b7f6e2379bd..0000000000000000000000000000000000000000 --- a/rust-toolchain.toml +++ /dev/null @@ -1,3 +0,0 @@ -[toolchain] -channel = "1.88.0" -components = ["rustfmt", "clippy"]
B — c_222c212e014d (tommy-mor)
message
[fe83c4a4] Remove agents_bound from whoami response. Drop the field from the wire protocol and CLI output so identity checks only return the principal username. Co-authored-by: Cursor <cursoragent@cursor.com>
diff preview
diff --git a/cli/src/main.rs b/cli/src/main.rs
index 555a6699db557b013ff154ff5395d1cc1bdd69d3..339005036eea2b7c0f98ab9b3007854de8ffaf2c 100644
--- a/cli/src/main.rs
+++ b/cli/src/main.rs
@@ -1644,7 +1644,6 @@ async fn main() -> Result<()> {
println!("{}", serde_json::to_string_pretty(&resp)?);
} else {
println!("{}", resp.user);
- println!("agents bound: {}", resp.agents_bound);
}
}
}
diff --git a/server/src/api/auth.rs b/server/src/api/auth.rs
index 1306daa5fc9da63cc72ad6870331e020eae8f2ae..bfddcce4dc1a77571d297648dd840e6c5bc194f8 100644
--- a/server/src/api/auth.rs
+++ b/server/src/api/auth.rs
@@ -754,14 +754,5 @@ pub async fn get_whoami(State(state): State<AppState>, headers: HeaderMap) -> im
Ok(u) => u,
Err((st, msg)) => return api_error(st, msg, None).into_response(),
};
- let agents_bound = reduced
- .agent_bindings
- .values()
- .filter(|u| *u == &username)
- .count();
- Json(WhoamiResponse {
- user: username,
- agents_bound,
- })
- .into_response()
+ Json(WhoamiResponse { user: username }).into_response()
}
diff --git a/types/src/lib.rs b/types/src/lib.rs
index a708df46b553e7b36b40555cc8f1b014d86eb653..d747e509094d75124573f252ee4b6c73186b4c24 100644
--- a/types/src/lib.rs
+++ b/types/src/lib.rs
@@ -532,7 +532,6 @@ pub struct PendingSessionPollResponse {
pub struct WhoamiResponse {
/// Username (stored form, no `@`).
pub user: String,
- pub agents_bound: usize,
}
/// One item's position within a ranking component.
Hardlinks — judgments / attempts / prompt
judgments
attempts
Prompt text is loaded only by the download route.