Enhancement candidates from the audit
A batch of worthwhile improvements (not bugs) surfaced across subsystems.
- Deploy: replace the fixed 60s post-
up sleep with a health poll. deploy.sh:230-231 (for i in $(seq 1 12); do sleep 5; …) always burns a minute even when ready in 3s and doesn't extend when slower. Reuse _bg_wait_healthy's poll loop; a real poll would also let standard deploy fail on crash-looping containers instead of printing success.
- Blue-green: honor
BUILD_MODE=local. _bg_start_color (deploy_blue_green.sh:127-143) always pulls and never builds; local-build stacks only work by accident via up's implicit build, ignoring BUILD_ARGS/BUILD_PULL/--no-cache. bg_deploy_stack also runs registry_login unconditionally where standard deploy skips it for local/none.
status-all: consult topology. cmd_status_all.sh:88-101 clears VPS_* and loads only the project-root env, so a [stacks]-mapped stack (host from topology, no env-file VPS_HOST) is probed against the local daemon and shows down while healthy remotely. Call topology_apply_to_env "$name" after the env load. Also emit epoch/ISO timestamps alongside the humanized "4h ago" strings (:281) for CI.
- Parallel fleet fan-out.
fleet status/fleet history/sync --all loop hosts serially; each dead host costs the full ConnectTimeout=10. A bounded-parallel fan-out (temp-file-per-host + wait, as _group_logs already does) makes these usable at fleet scale. Also give group <cmd> a skipped count so passed+failed==total.
- Safer secret output.
secrets export env-json/k8s-secret and keys api:generate/db:rotate print plaintext to stdout (CI logs). Offer --out <file> (chmod 600) / refuse-or-warn on non-TTY stdout. Consider gating the exec:// provider behind STRUT_ALLOW_EXEC_PROVIDER=1 so hydrating an untrusted pulled template can't execute silently.
Filed from the 2026-07-12 full-codebase audit (docs/AUDIT-2026-07-12.md).
Enhancement candidates from the audit
A batch of worthwhile improvements (not bugs) surfaced across subsystems.
upsleep with a health poll.deploy.sh:230-231(for i in $(seq 1 12); do sleep 5; …) always burns a minute even when ready in 3s and doesn't extend when slower. Reuse_bg_wait_healthy's poll loop; a real poll would also let standard deploy fail on crash-looping containers instead of printing success.BUILD_MODE=local._bg_start_color(deploy_blue_green.sh:127-143) always pulls and never builds; local-build stacks only work by accident viaup's implicit build, ignoringBUILD_ARGS/BUILD_PULL/--no-cache.bg_deploy_stackalso runsregistry_loginunconditionally where standard deploy skips it for local/none.status-all: consult topology.cmd_status_all.sh:88-101clearsVPS_*and loads only the project-root env, so a[stacks]-mapped stack (host from topology, no env-fileVPS_HOST) is probed against the local daemon and showsdownwhile healthy remotely. Calltopology_apply_to_env "$name"after the env load. Also emit epoch/ISO timestamps alongside the humanized"4h ago"strings (:281) for CI.fleet status/fleet history/sync --allloop hosts serially; each dead host costs the fullConnectTimeout=10. A bounded-parallel fan-out (temp-file-per-host +wait, as_group_logsalready does) makes these usable at fleet scale. Also givegroup <cmd>askippedcount sopassed+failed==total.secrets export env-json/k8s-secretandkeys api:generate/db:rotateprint plaintext to stdout (CI logs). Offer--out <file>(chmod 600) / refuse-or-warn on non-TTY stdout. Consider gating theexec://provider behindSTRUT_ALLOW_EXEC_PROVIDER=1so hydrating an untrusted pulled template can't execute silently.Filed from the 2026-07-12 full-codebase audit (docs/AUDIT-2026-07-12.md).