You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
[BUG] Build metadata stamping defects: empty BuildDate on Windows release binaries; stray brace in goreleaser BuildMinorVersion ldflag #704
Windows release binaries ship with an empty BuildDate. This surfaces as a
blank build_date field in the MCP server_info tool response and in stackql --version output for Windows builds (including the windows-x64
MCPB bundle, which repackages the signed release exe).
All three goreleaser configs contain a stray closing brace in the BuildMinorVersion ldflag ({{.Minor}}}), which would stamp a corrupted
minor version (e.g. 10}) in any goreleaser-built binary.
Observed
server_info from the windows-x64 MCPB bundle (v0.10.582, commit c926a33):
build_date: (empty)
version: 0.10.582
commit: c926a33
platform: Windows
Root cause
Defect 1:cicd/python/build.py stamps the build date from the BUILDDATE environment variable, defaulting to empty string:
The Linux and macOS jobs in .github/workflows/build.yml set BUILDDATE="$(date)" before invoking build.py. The winbuild job's
"Generate Build Flags and Build" step sets BUILDCOMMITSHA, BUILDPLATFORM
and BUILDPATCHVERSION but never sets BUILDDATE, so the ldflag resolves to
empty on Windows.
Defect 2: In .github/goreleaser/.goreleaser-for-windows.yaml, .goreleaser-for-darwin.yaml and .goreleaser-for-linux.yaml:
The trailing } is passed through into the stamped value. Currently latent
(release binaries are produced by build.yml, not goreleaser) but will bite
if the goreleaser path is ever used.
Proposed resolution
In the winbuild job, set BUILDDATE in the "Generate Build Flags and
Build" step, e.g.:
While here, consider standardising the Linux/macOS jobs on the same
ISO-8601 UTC format (date -u +%Y-%m-%dT%H:%M:%SZ) rather than the
locale-dependent $(date), so build_date is consistent and parseable
across platforms.
Fix {{.Minor}}} -> {{.Minor}} in all three goreleaser configs.
Optional hardening: fall back to debug.ReadBuildInfo()vcs.time in buildinfo when the ldflag is empty, so locally-built binaries also report
a build date; alternatively have RenderKV omit empty fields in the MCP
markdown render (the DTO already has omitempty for JSON, but the
markdown path prints blanks).
Activity
mcp: adopt protocol revision 2026-07-28 and add otel audit log format…