fix: three errors that ended with the wrong exit code

Found compiling the environment-variable table for AGENTS.md:
- A REVIEW_GATES_MEM_RESERVE_MB that is no number threw
  std::invalid_argument, which nothing caught: the process aborted where
  it should end with a ValueError, exit 1. nan and inf were an unchecked
  cast. They raise ValueError / OverflowError now; a value past int64
  saturates.
- An env file that is not UTF-8: `run` ended with exit 1 where its
  preflight should stop it (exit 3), and `seats` parsed the raw bytes. Both
  read it as strict UTF-8 text now.
- A broker address with a port past 65535 was cut to 16 bits; it is an
  OverflowError now, uncaught (exit 1).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Jorijn van der Graaf 2026-10-31 16:35:26 +01:00
commit 53b7d6de31
Signed by: jorijnvdgraaf
GPG key ID: 2937E59CDCC1BCFB
9 changed files with 58 additions and 14 deletions

View file

@ -27,7 +27,8 @@ export namespace Crafter::Review::Memory {
// MemAvailable in MB; nullopt without /proc/meminfo.
std::optional<std::int64_t> Available(const std::filesystem::path& path = "/proc/meminfo");
// REVIEW_GATES_MEM_RESERVE_MB, else 10 % of MemTotal, at least 2048.
// std::invalid_argument for a value that is no number.
// Dyn::Error for a value that is no number (ValueError) or is infinite
// (OverflowError); a value past int64 saturates.
std::int64_t Reserve(const std::optional<std::string>& configured, const std::filesystem::path& path = "/proc/meminfo");
std::int64_t Reserve();