feat(editor): add --summary flag to --audit-watertight-wob

Parity with the WOM-side --audit-watertight --summary added
last batch. Same one-line rollup format for CI dashboards:

  watertight-wob: PASS (1 buildings, 0 failure(s)) [/tmp/migtest, weld 0.001000]
  watertight-wob: FAIL (12 buildings, 4 failure(s)) [/tmp/zone, weld 0.001000]

Format: "watertight-wob: <PASS|FAIL> (<N> buildings, <K>
failure(s)) [<root>, weld <eps>]". Exit code unchanged —
failure count capped at 255.

Both --audit-watertight (WOM) and --audit-watertight-wob
(WOB) now offer the same trio of output modes: verbose
(default), --json (machine-readable), --summary (one-line
CI rollup).
This commit is contained in:
Kelsi 2026-05-09 13:12:42 -07:00
parent f167e1d2cf
commit 0a374fd27d
2 changed files with 13 additions and 2 deletions

View file

@ -593,8 +593,8 @@ void printUsage(const char* argv0) {
std::printf(" Walk every .wom + .wob under zoneDir, weld each independently, append to one shared WOC\n");
std::printf(" --audit-watertight <zoneDir|projectDir> [--weld <eps>] [--json] [--summary]\n");
std::printf(" Walk every .wom under root, run welded watertight check; --summary prints a one-line rollup\n");
std::printf(" --audit-watertight-wob <zoneDir|projectDir> [--weld <eps>] [--json]\n");
std::printf(" Walk every .wob, check that EVERY group is closed (per-group weld) — interior rooms must be solid\n");
std::printf(" --audit-watertight-wob <zoneDir|projectDir> [--weld <eps>] [--json] [--summary]\n");
std::printf(" Walk every .wob, check that EVERY group is closed (per-group weld); --summary prints one-line rollup\n");
std::printf(" --import-obj <obj-path> [wom-base]\n");
std::printf(" Convert a Wavefront OBJ back into WOM (round-trips with --export-obj)\n");
std::printf(" --export-wob-obj <wob-base> [out.obj]\n");