ops(svos): v0.0.23 (U22: judge 0.0.2 explain, interface 0.0.8 summaries, UI 0.0.27) staged on nh3-svos; judge.toml explain_seconds; two-card cutover playbooks ready

This commit is contained in:
vh
2026-10-19 02:00:51 -07:00
parent 3bb5c6b726
commit 4b3f7769c0
4 changed files with 108 additions and 1 deletions
@@ -0,0 +1,29 @@
# nh3-svos v0.0.23 step 2: restart ONLY svos-interface onto app-interface 0.0.8 (U22: verbs summaries + summary, namespace
# interface-summaries; the store state/apps/interface/summaries.sqlite3 is created at start). Raises a held card for
# app-interface: the WHOLE interface answers wrong-revision until Prime approves (about 30 s at v0.0.18). Run only after
# the judge's card is approved, with Prime at the board. Then Prime's two grants on ns:interface-summaries.
steps:
- name: current is 9a0eec8 and the judge's new revision is pinned
sudo: true
shell: |
readlink /opt/svos/current | grep -q 9a0eec8
python3 -c "
import sqlite3
c = sqlite3.connect('file:/var/lib/svos/state/svos.db?mode=ro', uri=True)
r = c.execute(\"select revision, state from app_manifests where slug='app-judge' order by revision desc limit 1\").fetchone(); print('judge', r)
assert r[1] == 'pinned', 'judge card not approved yet'"
changed_when: "false"
- name: Restart ONLY svos-interface (raises the held card)
sudo: true
shell: systemctl restart svos-interface; sleep 8; systemctl is-active svos-interface
verify:
- name: Interface on 9a0eec8; its manifest revision and card
sudo: true
shell: |
pid=$(systemctl show svos-interface -p MainPID --value); grep -q /opt/svos/releases/9a0eec8 /proc/$pid/maps && echo "interface pid $pid on 9a0eec8"
python3 -c "
import sqlite3
c = sqlite3.connect('file:/var/lib/svos/state/svos.db?mode=ro', uri=True)
for r in c.execute(\"select slug, revision, substr(sha256,1,12), state from app_manifests where slug='app-interface' order by revision desc limit 2\"): print(r)
for r in c.execute(\"select id, kind, state, created_at, expires_at from cards where slug='app-interface' and kind='manifest' order by created_at desc limit 1\"): print(r)"
changed_when: "false"