# 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"