mirror of
https://github.com/hanzoai/gen.git
synced 2026-10-30 15:05:53 +00:00
exe::command and exe::bare are now the only way to make a Command, and root_is_the_one_resolver fails the build on Command::new anywhere else. Each child is handed only the absolute PATH entries, so an agent whose `#!/usr/bin/env node` used to find a repository's ./node finds the real one; on Windows NoDefaultCurrentDirectoryInExePath=1 keeps cmd.exe out of the working directory. A version is asked in the program's own directory and only its first line is read, so a child left holding the output open no longer holds the session for 20 seconds. The relay is made before the agent starts, so a signal during startup no longer kills Gen and orphans the agent. SIGINT is passed on unless Gen is in its terminal's foreground group; a signal Gen was started ignoring stays ignored; and once the agent is reaped each signal goes back to how Gen started, so SIGTERM during finalize ends it at once. tests/signals.rs holds all three against the built binary. A run home is swept only when its gen.lock can be taken. Gen and the agent, which inherits the descriptor, hold it, so a session in another pid namespace, on another host, or whose agent outlived Gen keeps its home. The release smokes the linux binary in a job with no permissions; publish executes nothing it was handed, downloads each artifact into a directory of its own that must hold exactly its two files, and keeps the write token in the one step that uses it.