deploy_llm_dragoon/zealot/arkon now call require_image / require_bytes / require_min_mib / require_file / require_dir_files, so the deployer and the serve scripts refuse the same missing payload with the same words — the 2026-10-01 crash-loop law, enforced by construction instead of by duplicated shell. require_exec joins the library for the native-runtime gate (a compiled tree that lost its +x refuses like a missing one). relink_unit takes SYSTEMD_SYSTEM_DIR so a handler can be driven end to end in a sandbox. The library's own refusals now carry their status: a bash function that ends inside an if returns the CONDITION's status, so a gate whose last statement is its refusal printed the message and returned SUCCESS — the new seam caught it, and the gate tests pin it. New seam tests/llm_deploy_gates.bash + tests/stubs/: deploy-remote.sh's LLM handlers EXECUTED against stub systemctl/podman/sudo/ss/curl, asserting exit status, refusal text, no restart, and the pending state marker.
14 lines
417 B
Bash
Executable File
14 lines
417 B
Bash
Executable File
#!/usr/bin/env bash
|
|
# Stub sudo for the deploy-handler seam: run_privileged pipes the password
|
|
# on stdin and calls `sudo -S -- <cmd>`. The stub drops the password and the
|
|
# flags and execs the command, so no privilege gate hides a handler bug.
|
|
cat >/dev/null 2>&1 || true
|
|
while [ "$#" -gt 0 ]; do
|
|
case "$1" in
|
|
-S|--prompt) shift ;;
|
|
--) shift; break ;;
|
|
*) break ;;
|
|
esac
|
|
done
|
|
exec "$@"
|