Panama learns what a server is: from a root login to running containers
A machine's role is now the interview's first question and the one answer Panama records. Servers get the same shell minus the screen: core packages, nvm, Bun, Claude Code and Codex (desktops get Codex too), linger, rootless ports from 80, firewalld, the nginx-bridge network, and a nightly image updater that replaced watchtower for cause. server/containers/ carries junior's 23 compose services -- secrets moved to per-machine .env files that never enter this public repo, every transformed compose proven to render byte-identical to what is live. 'panama server' enables, disables and relinks them; nothing here restarts a running service. 'boot --server' walks a fresh VPS from its root login to a normal install. Five new contracts pin the secrets rule, the catalog's shape, panama-server's behavior, the role plumbing, and the dotfile classification. Claude-Session: https://claude.ai/code/session_01NU5JGiN3JfzqrLQB6wmJ1E
This commit is contained in:
@@ -35,7 +35,9 @@ consumed="$(grep -rhoE '\$\{PANAMA_[A-Z_]+' "$repo_dir"/setup/scripts/* "$instal
|
||||
# which is the akmods certificate path with an override on it. Nothing sets that
|
||||
# override outside the hardware contract, which needs a certificate it is allowed
|
||||
# to create -- enrolling the real one to find out what happens is not a test.
|
||||
INFRASTRUCTURE='^(PANAMA_PATH|PANAMA_ANSWERS|PANAMA_BASH|PANAMA_DOT|PANAMA_OLD|PANAMA_APPLICATION_DIR|PANAMA_ICON_DIR|PANAMA_UNIT_DIR|PANAMA_CURSOR_DIR|PANAMA_WALLPAPER_DIR|PANAMA_MOK_CERT)$'
|
||||
# PANAMA_ROLE_PRESET is the --server flag on its way INTO the interview, not an
|
||||
# answer out of it -- the answer it produces is PANAMA_ROLE, which is checked.
|
||||
INFRASTRUCTURE='^(PANAMA_PATH|PANAMA_ANSWERS|PANAMA_BASH|PANAMA_DOT|PANAMA_OLD|PANAMA_APPLICATION_DIR|PANAMA_ICON_DIR|PANAMA_UNIT_DIR|PANAMA_CURSOR_DIR|PANAMA_WALLPAPER_DIR|PANAMA_MOK_CERT|PANAMA_ROLE_PRESET)$'
|
||||
|
||||
while read -r key; do
|
||||
[[ -n "$key" ]] || continue
|
||||
@@ -67,7 +69,7 @@ grep -qE 'mktemp' "$install_script" \
|
||||
|| note 'install does not create the answers file with mktemp'
|
||||
|
||||
# Declining must stop the run rather than count as one failed stage among five.
|
||||
grep -qE 'if ! "\$PANAMA_PATH/setup/scripts/interview"; then' "$install_script" \
|
||||
grep -qE 'if ! [A-Z_="$ ]*"\$PANAMA_PATH/setup/scripts/interview"; then' "$install_script" \
|
||||
|| note 'install does not treat a declined interview as fatal'
|
||||
|
||||
# ── 4. A real run, with gum stubbed ──────────────────────────────────────────
|
||||
|
||||
Reference in New Issue
Block a user