From 48b8f20919866197f79175982adb25559c367cb6 Mon Sep 17 00:00:00 2001 From: Vuong Hoang Date: Mon, 19 Oct 2026 00:32:54 -0700 Subject: [PATCH] ops(svos): v0.0.19 (UI 0.0.23, U21 working look) staged on nh3-svos; UI-only publish playbook ready, gated on the tag reaching origin --- .../nh3-svos-91e9f2d-v0.0.19-stage.yaml | 26 +++++++++++++++++++ .../nh3-svos-91e9f2d-v0.0.19.yaml | 26 +++++++++++++++++++ 2 files changed, 52 insertions(+) create mode 100644 playbooks/svos-releases/nh3-svos-91e9f2d-v0.0.19-stage.yaml create mode 100644 playbooks/svos-releases/nh3-svos-91e9f2d-v0.0.19.yaml diff --git a/playbooks/svos-releases/nh3-svos-91e9f2d-v0.0.19-stage.yaml b/playbooks/svos-releases/nh3-svos-91e9f2d-v0.0.19-stage.yaml new file mode 100644 index 0000000..0279eb2 --- /dev/null +++ b/playbooks/svos-releases/nh3-svos-91e9f2d-v0.0.19-stage.yaml @@ -0,0 +1,26 @@ +# nh3-svos: STAGE SVOS v0.0.19 (91e9f2d) beside the live release. Installs into /opt/svos/releases/91e9f2d and runs the +# new kernel's check-config against the live configuration. Does NOT switch current, stop or start anything. +# svos-dev's request (thread 01M59H5W335E6W5JP67M6Y6SE7): UI 0.0.23 (U21 working look behind ?look=); kernel 0.0.19 is a +# version bump; everything else carried from 6d4cb1c. Built from the LOCAL tag before the push; the publish +# (nh3-svos-91e9f2d-v0.0.19.yaml) first needs origin's v0.0.19 to name the same commit. +steps: + - name: Private staging dir + shell: install -d -m 0700 /tmp/svos-stage-91e9f2d + - {name: stage release, upload: {src: /tmp/claude-1000/-home-lkraven-development-eshpfi-management/e0be18fd-0734-4786-b933-904f0a74d2a2/scratchpad/svos-91e9f2d/svos-release-91e9f2d.tar.gz, dest: /tmp/svos-stage-91e9f2d/release.tar.gz, mode: "0644"}} + - {name: stage uv, upload: {src: /home/lkraven/bin/uv, dest: /tmp/svos-stage-91e9f2d/uv, mode: "0755"}} + - {name: stage installer, upload: {src: /tmp/claude-1000/-home-lkraven-development-eshpfi-management/e0be18fd-0734-4786-b933-904f0a74d2a2/scratchpad/svos-91e9f2d/install-release.py, dest: /tmp/svos-stage-91e9f2d/install-release.py, mode: "0644"}} + - name: Verify staged hashes + shell: cd /tmp/svos-stage-91e9f2d && printf '%s %s\n' a76882475741d1548c487497042f50b71478cb3412af0657f4f51f641f755dff release.tar.gz 83aa128da93e168283ed32cf75cd819fe17b135b3fc1f7ccb3c912eec198d9fb uv | sha256sum -c - + changed_when: "false" + - name: Install release 91e9f2d beside the live one (current NOT switched) + sudo: true + shell: python3 /tmp/svos-stage-91e9f2d/install-release.py + creates: /opt/svos/releases/91e9f2d/apps-env/pyvenv.cfg +verify: + - name: New kernel 0.0.19 accepts the live configuration as it is + sudo: true + shell: runuser -u svc-svos -- /opt/svos/releases/91e9f2d/kernel-env/bin/svos-kernel check-config --data-root /var/lib/svos + changed_when: "false" + - name: current still points at the live release + shell: readlink /opt/svos/current + changed_when: "false" diff --git a/playbooks/svos-releases/nh3-svos-91e9f2d-v0.0.19.yaml b/playbooks/svos-releases/nh3-svos-91e9f2d-v0.0.19.yaml new file mode 100644 index 0000000..f1b147d --- /dev/null +++ b/playbooks/svos-releases/nh3-svos-91e9f2d-v0.0.19.yaml @@ -0,0 +1,26 @@ +# nh3-svos -> SVOS v0.0.19 (91e9f2d): UI-only publish. UI 0.0.23 (U21: the tree's working look behind the hero's ?look= +# switch; default rendering unchanged). Kernel 0.0.19 = a version bump; no app change, no manifest revision, no card. +# svos-dev's request, thread 01M59H5W335E6W5JP67M6Y6SE7. PRE-REQS: the stage playbook; origin's v0.0.19 == 91e9f2d70c5e +# (git ls-remote on nh3-dev before this runs). current must move because svos-front-inventory generates from +# /opt/svos/current/static; NOTHING restarts: the kernel, knowledge, judge and voice keep running 15c2d04's code and the +# interface 6d4cb1c's (all identical in code), so keep both dirs until those processes restart. +steps: + - name: Pre-reqs present + sudo: true + shell: test -f /opt/svos/releases/91e9f2d/static/index.html && readlink /opt/svos/current + changed_when: "false" + - name: Switch current to 91e9f2d + sudo: true + shell: ln -sfn /opt/svos/releases/91e9f2d /opt/svos/current.new && chgrp -h svc-svos /opt/svos/current.new && mv -T /opt/svos/current.new /opt/svos/current && readlink /opt/svos/current + - name: Front door inventory (UI 0.0.23 live; 6d4cb1c becomes previous) + sudo: true + shell: /usr/local/sbin/svos-front-inventory 2>&1 | grep -E 'GENERATED|updated|root \*|path /assets' | head -4 +verify: + - name: Front door inventory current; health unchanged + sudo: true + shell: /usr/local/sbin/svos-front-inventory --check && curl -s http://127.0.0.1:8400/health && echo + changed_when: "false" + - name: Which release dir each running service maps (nothing restarted) + sudo: true + shell: for u in svos-kernel svos-interface svos-knowledge svos-judge svos-voice; do pid=$(systemctl show $u -p MainPID --value); printf '%s %s\n' $u "$(grep -oE '/opt/svos/releases/[0-9a-f]+' /proc/$pid/maps | sort -u | tr '\n' ' ')"; done + changed_when: "false"