orchestrator --info check rejects working binaries (servers, CLIs without --info, JSON-printers) #293

Closed
opened 2026-05-25 06:03:56 +00:00 by zaelgohary · 0 comments
Member

Problem

Lab's release orchestrator runs <binary> --info on every built binary as a post-build sanity check. Three failure modes cause the check to fail on binaries that are otherwise correct, marking the whole repo as failed:

A. Server binaries — timeout

WARN: hero_foundry_ui_server: --info check failed: hero_foundry_ui_server --info timed out after 15s — binary likely doesnt implement --info and started a server instead
FAILED: hero_foundry_ui_server

Server binaries that dont implement --info block-start their listener and time out. The build succeeded; the runtime smoke check is at the wrong layer.

B. CLIs that exit 2 on unknown args

WARN: hero_foundry: --info check failed: hero_foundry --info exited exit status: 2: error: unexpected argument --info found
FAILED: hero_foundry

Clap-based CLIs return exit code 2 for unknown args. Equally a successful build.

C. JSON output that doesnt parse as ServiceToml

WARN: hero_walkthrough: --info check failed: hero_walkthrough --info --json failed ServiceToml deserialise: expected value at line 1 column 1
Output: === Hero RPC service walkthrough ===
FAILED: hero_walkthrough

The binary printed a banner before the JSON; deserialise treats that as a fatal error.

Today's blast radius

From this mornings lab flow template build --release on herodev (hero_codescalers#27):

  • hero_foundry_ui — 3 targets fail (server timeout, CLI exit 2, server timeout)
  • hero_gpu — 4 targets fail (server timeout, CLI exit 2 ×2, no output)
  • hero_rpchero_walkthrough JSON deserialise fails

That's 8 binaries discarded out of a successful build set.

Suggested fix

Demote --info from build gate to post-build warning:

  • If --info times out / exits non-zero / produces non-JSON, log a warning but install the binary and count the target as built.
  • Optionally: skip the check entirely for binaries whose Cargo.toml declares [[bin]] kind = "server" or whose name ends in _server.

Alternatively: enforce a per-target opt-in via a manifest field, defaulting to off so unmaintained CLIs dont block rollouts.

## Problem Lab's release orchestrator runs `<binary> --info` on every built binary as a post-build sanity check. Three failure modes cause the check to fail on binaries that are **otherwise correct**, marking the whole repo as failed: ### A. Server binaries — timeout ``` WARN: hero_foundry_ui_server: --info check failed: hero_foundry_ui_server --info timed out after 15s — binary likely doesnt implement --info and started a server instead FAILED: hero_foundry_ui_server ``` Server binaries that dont implement `--info` block-start their listener and time out. The build succeeded; the runtime smoke check is at the wrong layer. ### B. CLIs that exit 2 on unknown args ``` WARN: hero_foundry: --info check failed: hero_foundry --info exited exit status: 2: error: unexpected argument --info found FAILED: hero_foundry ``` Clap-based CLIs return exit code 2 for unknown args. Equally a successful build. ### C. JSON output that doesnt parse as ServiceToml ``` WARN: hero_walkthrough: --info check failed: hero_walkthrough --info --json failed ServiceToml deserialise: expected value at line 1 column 1 Output: === Hero RPC service walkthrough === FAILED: hero_walkthrough ``` The binary printed a banner before the JSON; deserialise treats that as a fatal error. ## Today's blast radius From this mornings `lab flow template build --release` on herodev (`hero_codescalers#27`): - `hero_foundry_ui` — 3 targets fail (server timeout, CLI exit 2, server timeout) - `hero_gpu` — 4 targets fail (server timeout, CLI exit 2 ×2, no output) - `hero_rpc` — `hero_walkthrough` JSON deserialise fails That's 8 binaries discarded out of a successful build set. ## Suggested fix Demote `--info` from **build gate** to **post-build warning**: - If `--info` times out / exits non-zero / produces non-JSON, log a warning but install the binary and count the target as built. - Optionally: skip the check entirely for binaries whose `Cargo.toml` declares `[[bin]] kind = "server"` or whose name ends in `_server`. Alternatively: enforce a per-target opt-in via a manifest field, defaulting to off so unmaintained CLIs dont block rollouts.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
lhumina_code/hero_skills#293
No description provided.