Skip to content

The cluster page shows each node's version and the commit it was built from (T-465) - #331

Merged
chasers merged 2 commits into
t-463-size-from-catalogfrom
t-465-cluster-build-column
Sep 11, 2026
Merged

The cluster page shows each node's version and the commit it was built from (T-465)#331
chasers merged 2 commits into
t-463-size-from-catalogfrom
t-465-cluster-build-column

Conversation

@chasers

@chasers chasers commented Sep 11, 2026

Copy link
Copy Markdown
Owner

Tracker: T-465. Stacked on #330 (T-463).

Every push to main ships 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 own Smolquery.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 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 an older release shows a dash. Documented in docs/configuration.md and the deployment notes.

🤖 Generated with Claude Code

https://claude.ai/code/session_014K63Kxq4pf7eD9K1416Eju

@chasers
chasers added this pull request to stack #332 September 11, 2026 17:07
@chasers
chasers force-pushed the t-465-cluster-build-column branch from 76ebf4c to e98abbe Compare September 11, 2026 19:54
Chase Granberry and others added 2 commits September 11, 2026 21:15
…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
chasers force-pushed the t-465-cluster-build-column branch from e98abbe to 0defdaa Compare September 11, 2026 21:15
@chasers
chasers merged commit 895d69c into main Sep 11, 2026
17 of 18 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant