The cluster page shows each node's version and the commit it was built from (T-465) - #331
Merged
Merged
Conversation
chasers
added this pull request to stack #332
September 11, 2026 17:07
chasers
force-pushed
the
t-465-cluster-build-column
branch
from
September 11, 2026 19:54
76ebf4c to
e98abbe
Compare
…t from (T-465) Every push to main ships an image tagged by commit, and most of them do not bump mix.exs's version, so the version alone cannot tell two deploys apart and a half-rolled fleet looked uniform. The node table gains a Build column: each node's own Smolquery.build/0 — version and git commit — read over the same RPC as its roles, the short commit beside the version with the full one as the title. The commit reaches the node as SMOLQUERY_GIT_SHA: the Dockerfile bakes it in from a GIT_SHA build argument, release.yml passes the pushed commit and scripts/kind-up.sh the checkout's HEAD, and config/runtime.exs reads it into :git_sha. A build without it shows its version alone; a node down or on a release older than this shows a dash. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014K63Kxq4pf7eD9K1416Eju
… rows are gathered concurrently, and the env-mutating test runs alone Docker defines a build argument's ENV as the empty string when the argument is not passed, so every image built outside release.yml carried SMOLQUERY_GIT_SHA="" and the page rendered an empty commit badge where the docs promised the version alone. Both the config read and git_sha/0 treat "" as unset. The build column added a fourth sequential RPC per alive remote node, and a node in the membership that is not yet answering — mid-roll, or partitioned before the net tick — made every RPC wait its full timeout, in series, longer than the page's refresh interval. Rows are gathered one task per node now; a row that does not answer inside one node's worth of timeouts is shown alive with what the membership alone knows. SmolqueryTest mutated application env from an async module; it runs synchronously. The cluster page test that claimed to cover a down node is named for what it checks: a build with no commit shows the version alone. The topology test asserts the local row's build. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014K63Kxq4pf7eD9K1416Eju
chasers
force-pushed
the
t-465-cluster-build-column
branch
from
September 11, 2026 21:15
e98abbe to
0defdaa
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Tracker: T-465. Stacked on #330 (T-463).
Every push to
mainships an image tagged by commit, and most do not bump the version, so the cluster page could not tell two deploys apart. The node table gains a Build column: each node's ownSmolquery.build/0— version and git commit — read over the same RPC as its roles, short commit beside the version with the full one as the title.The commit reaches the node as
SMOLQUERY_GIT_SHA: the Dockerfile bakes it in from aGIT_SHAbuild argument,release.ymlpasses the pushed commit andscripts/kind-up.shthe checkout's HEAD, andconfig/runtime.exsreads it into:git_sha. A build without it shows its version alone; a node down or on an older release shows a dash. Documented indocs/configuration.mdand the deployment notes.🤖 Generated with Claude Code
https://claude.ai/code/session_014K63Kxq4pf7eD9K1416Eju