--- id: "bug-1467" status: "fixed" status_updated: "2026-09-24" status_note: "" component: "controller" severity: "unknown" timestamp: "2026-07-25T08:55:00Z" last_seen: "2026-09-19T09:00:00Z" occurrences: 1 files: ["src/controller/testsuite/test.c"] tags: ["config-upgrade-snapshot", "task-8.4", "configcompare", "xce_test", "cli-dispatch", "reviewer-rejection", "testsuite"] related: [] legacy: true --- # bug-1467: Reviewer rejected config-upgrade-snapshot task 8.4: configcompare_paths() (configcompare.c/.h) was… ## Description Reviewer rejected config-upgrade-snapshot task 8.4: configcompare_paths() (configcompare.c/.h) was a correct, fully-tested library function but was not reachable from anywhere outside the unit test binary -- unlike its siblings walcompare/snapverify/snapdiff, it was never registered as an xce_test CLI subcommand in test.c. `echo help | xce_test` confirmed configcompare was missing from the command list. ## Environment _Not recorded (migrated from buglog.json)._ ## Reproduction _Not recorded (migrated from buglog.json)._ ## Root cause The prior implementer built and unit-tested configcompare_paths() as a library function but never wired a cmd_configcompare() wrapper into test.c's dispatcher (include, extern decl, top_commands[], client_commands[] entries, and the wrapper function itself) -- the step every other sibling tool in this family (walcompare, snapverify, snapdiff) already had. ## Fix Added #include "configcompare.h", extern int cmd_configcompare(int, char*[]) forward decl, a { "configcompare", cmd_configcompare, ... } entry in both top_commands[] and client_commands[], and a cmd_configcompare() wrapper (mirroring cmd_snapdiff's exact usage-message/return-value convention: argc<3 -> usage + -1, tool ran -> 0 on match / -1 on divergence) placed immediately after cmd_snapdiff's definition in test.c. Zero changes to configcompare.c/.h, snapverify.c/.h, test_configcompare.c, test_snapverify.c, controller_test.c, or meson.build (all previously reviewed and approved as-is). Verified: controller_unit_test build clean, 1022/1022 tests pass (pure regression check, no test files touched); `echo help | xce_test` lists configcompare; hand-built /tmp fixture member dirs (conf/current + conf/cluster.bin.) smoke-tested via piped stdin -- identical-content case printed 'IDENTICAL across 2 members' with exit 0, divergent-content case printed 'DIVERGENT -- member 1 differs from member 0' with exit 1. ## Verification _Not recorded (migrated from buglog.json)._ ## References _Not recorded (migrated from buglog.json)._