feat(dirty-content-fingerprint): controller/scheduler show fingerprint in --version

controller/main.c and scheduler/src/main.c now compose argp_program_version
via a genuinely separate buffer/call to xce_compose_version_ex() (reading
STR(VERSION_DIRTY_FINGERPRINT), matching the existing commit_id/build_time
macro pattern). The startup-log composition call site -- same function,
same arguments, same buffer -- is left completely unchanged in both files.
controller/testsuite/test.c (xce_test, confirmed to have no startup log)
gets a direct in-place swap. All three files carry explicit comments
marking the --version/startup-log divergence as deliberate.

Verified independently by review with real builds and live daemon starts:
--version shows <commit>-<fingerprint> for all three binaries, matching
compile_commands.json; live startup logs for both daemons show the
unchanged old <commit>-dirty format with the fingerprint never present.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
Rongsong Shen 2026-08-21 05:42:11 +00:00
parent 7ebcba6d49
commit fd62e26bce
No known key found for this signature in database
GPG key ID: 5BCDAAE0123E9FE2
4 changed files with 49 additions and 8 deletions

View file

@ -4394,10 +4394,18 @@ int main(int argc, char* argv[])
memset(&arguments, 0x0, sizeof(arguments));
/* Must run before argp_parse(): argp reads argp_program_version by
/* dirty-content-fingerprint task 3.2: xce_test is not a daemon -- it has
* no startup log line at all (see anatomy/build-time-versioning notes),
* so there is no second call site to keep divergent here (unlike
* controller/main.c and scheduler/src/main.c, which each keep a
* separate, untouched xce_compose_version() buffer for their startup
* INFO log per Req 3.2). version_buf can safely be composed directly
* via xce_compose_version_ex() to pick up the dirty_fingerprint suffix.
* Must run before argp_parse(): argp reads argp_program_version by
* pointer when --version/-V is processed. */
xce_compose_version(version_buf, sizeof(version_buf), "xce v0.0.1-",
STR(VERSION_COMMIT_ID), STR(VERSION_BUILD_TIME));
xce_compose_version_ex(version_buf, sizeof(version_buf), "xce v0.0.1-",
STR(VERSION_COMMIT_ID), STR(VERSION_BUILD_TIME),
STR(VERSION_DIRTY_FINGERPRINT));
argp_program_version = version_buf;
argp_parse(&argp, argc, argv, 0, 0, &arguments);