diff --git a/persistent-memory.md b/persistent-memory.md index 33c9576..ff5fd70 100644 --- a/persistent-memory.md +++ b/persistent-memory.md @@ -123,7 +123,7 @@ _As of 2026-10-18 ~2125 PT. The newest subsection is first; older subsections ca - **Nothing is mid-action.** No ops-log claims held, no background watchers. eshpfi `main` is pushed (standing push since 2026-10-13); vh/worldtree-instance-configs `main` also has STANDING push since 2026-10-16 (Prime; auto-memory `feedback_git_autonomous`). On Prime's word ~2120 10-18: svoperatingsystem `main` + tag `v0.0.17` (15c2d04) and dotfiles `f909dcf` pushed. ⚠ The working tree and index are shared with infra-hermes, albok-dev and subagents: commit with `git commit -- ` and read `git log origin/main..main` before pushing. `graphify-out/GRAPH_REPORT.md` stays modified on purpose. - **SVOS v0.0.17 (15c2d04) LIVE since 10-18 2255** (Prime's "deploy now" 2235 via svos-dev, thread `01M595YP8R62Y665C38MHPH6YX`): kernel 0.0.17 + UI 0.0.21 on nh3-svos, config gen `29bc36bf074b8245` (the six runtimes' prompt/working/window), voice `utterance_seconds = 60`; nh3-dev `current → 15c2d04`, only svos-terminal 0.0.6 restarted. No card: terminal revision 6 changes only `version`, so it pinned silently. Verified: 13 `seat/activity_changed` events at 2255:13 (ops-infra working = the positive control, 12 waiting; dev-ldp stays unknown, its 14-day-old claude matches neither mark). Not verified by infra-ops: GET /seats (needs a principal) and the hero "Fleet · working · N" (Prime's eyes). Rollback: servers/nh3-svos/README.md § Release 15c2d04. - **SVOS v0.0.20 (81cc5a2) UI 0.0.24 LIVE since 10-19 0055** (UI-only again: `stronger` look by default; the /tasks draft waits 125 s, after a 10 s browser abort discarded four good drafts). Nothing restarted. → servers/nh3-svos/README.md § Release 81cc5a2. Before it: (UI-only: U21 working look behind `?look=strong|stronger`, default unchanged; Prime picks, a later patch sets the default). Nothing restarted: the processes run 15c2d04 (kernel/knowledge/judge/voice) and 6d4cb1c (interface) code — keep both dirs. → servers/nh3-svos/README.md § Release 91e9f2d. -- **SVOS v0.0.18 (6d4cb1c, U20 settings) LIVE since 10-18 2352** (thread `01M59D7NTZNN75SRP0M4ZQF91A`): infra-ops pushed svoperatingsystem main + tag on Prime's in-session "push it" (his own push never landed). Interface 0.0.7 + UI 0.0.22; only svos-interface restarted; card approved by Prime 2352:16 (via Matrix), interface down 30 s. ⚠ The kernel process still runs 15c2d04's code and reports 0.0.17 until its next restart (identical code). Config gen `db56b0ed9b743fb7` since 10-19 0016 (`[[seats.repos]]` + repo-albok, Prime via svos-dev: dev-albok on the tree; backup `instance.toml.pre-repo-albok`). Both `ns:interface-settings` grants are IN (issued by infra-ops as Prime on his word, approved by him 2356; grant ids 207/208). **Open, Prime's:** the /settings and panel checks plus his listening test. Details + rollback: servers/nh3-svos/README.md § Release 6d4cb1c. +- **SVOS v0.0.18 (6d4cb1c, U20 settings) LIVE since 10-18 2352** (thread `01M59D7NTZNN75SRP0M4ZQF91A`): infra-ops pushed svoperatingsystem main + tag on Prime's in-session "push it" (his own push never landed). Interface 0.0.7 + UI 0.0.22; only svos-interface restarted; card approved by Prime 2352:16 (via Matrix), interface down 30 s. ⚠ The kernel process still runs 15c2d04's code and reports 0.0.17 until its next restart (identical code). Config gen `d750257258f9fb68` since 10-19 0101 (`[[seats.repos]]` + repo-albok 0016, + repo-dread [path dreadnaught; the session handle is dread-dev, and the repo name must match the handle] and repo-svtc 0101, Prime via svos-dev; backups `instance.toml.pre-repo-albok`, `.pre-repo-dread-svtc`). Both `ns:interface-settings` grants are IN (issued by infra-ops as Prime on his word, approved by him 2356; grant ids 207/208). **Open, Prime's:** the /settings and panel checks plus his listening test. Details + rollback: servers/nh3-svos/README.md § Release 6d4cb1c. - **SVOS (before v0.0.17): v0.0.16 `b51aa5e` on nh3-svos (10-18 1634–2254)** with app-judge (drafting gen-large; six local task models; `[tasks].judge` on, gen `13241a40`); nh3-dev on `3726d73`. Card audio VERIFIED 10-18 (3/3, 4.5–5.5 s). voice.toml `utterance_seconds` was 30 until v0.0.17 (the old web client refused >30); 60 since. **Open:** one drafted scratch task from /tasks (Draft → launch → approve; expect routing, admitted, routed, launching, started) — verifies v0.0.14's gate, the hermes query-file route and U19; Prime must launch it (every spawn is an owner card). Details + rollback material: servers/nh3-svos/README.md. - **Worldtree:** all three on v1.0.0b195 `a416ac01c5a2` since 1112 10-16; Matrix bridge profile-gated (`COMPOSE_PROFILES=matrix` on demo + personal box .env; pinned none, renders api only). Retired-config strips DONE (demo `2240110`, personal `4d1aae2`). ⚠ Pinned's seeded host config dir `/opt/worldtree-pinned/config` is NOT tracked in vh/worldtree-instance-configs and `deploy-wt-config` refuses pinned: capture it. The daily memory gate keeps its harness scratch since 10-18 (`--keep-data`, `~/.local/state/wt-memory-gate-batch/scratch//`, 14-day user tmpfiles); 10-18 PASS. Keep defaults `library:` (thread `01M4WA58P2M001K1420NN72WFM`). - **Decision seat = h2o-lightning-4b (production, Prime 1805 10-13: fix forward, no INC fallback).** The one open margin is the judge's personal-question reading (h2o 18 vs INC 6 on fleet/memory); albok-dev re-fits it forward in small batches on the live seat. diff --git a/playbooks/svos-releases/nh3-svos-seats-repo-dread-svtc.yaml b/playbooks/svos-releases/nh3-svos-seats-repo-dread-svtc.yaml new file mode 100644 index 0000000..a47b86c --- /dev/null +++ b/playbooks/svos-releases/nh3-svos-seats-repo-dread-svtc.yaml @@ -0,0 +1,42 @@ +# nh3-svos: add repo-dread (path .../dreadnaught) and repo-svtc to [[seats.repos]] (Prime 0118 2026-10-19 via svos-dev, +# thread 01M59JT6AF3H6AH8E59KV7D9P2: "register dreadnaught and svtc"). Config only: check-config, then reload; no restart. +# ⚠ The name after `repo-` must match the session's ALTHING_HANDLE (`-`, kernel/seats.py _matching), and +# dreadnaught's session is `dread-dev`, so the repo is `repo-dread` (precedent: repo-infra, repo-highseat, repo-design). +steps: + - name: Back up instance.toml, then insert both repos in alphabetical place + sudo: true + shell: | + set -e + p=/var/lib/svos/config/instance.toml + runuser -u svc-svos -- cp -p $p $p.pre-repo-dread-svtc + runuser -u svc-svos -- python3 - <<'PY' + import os + p = "/var/lib/svos/config/instance.toml"; s = open(p, encoding="utf-8").read() + assert 'name = "repo-dread"' not in s and 'name = "repo-svtc"' not in s + a1 = '[[seats.repos]]\nname = "repo-dvalin-smithy"\n' + a2 = '[[seats.repos]]\nname = "repo-tts"\n' + assert s.count(a1) == 1 and s.count(a2) == 1 + s = s.replace(a1, '[[seats.repos]] # 2026-10-19 (Prime): the session is dread-dev, so the name is repo-dread\nname = "repo-dread"\npath = "/home/lkraven/development/dreadnaught"\n' + a1) + s = s.replace(a2, '[[seats.repos]] # 2026-10-19 (Prime)\nname = "repo-svtc"\npath = "/home/lkraven/development/svtc"\n' + a2) + t = p + ".tmp"; fd = os.open(t, os.O_WRONLY | os.O_CREAT | os.O_TRUNC, 0o600) + with os.fdopen(fd, "w", encoding="utf-8") as f: f.write(s) + os.replace(t, p); print("edited") + PY + - name: check-config (restore on refusal), then reload + sudo: true + shell: | + if ! runuser -u svc-svos -- /opt/svos/current/kernel-env/bin/svos-kernel check-config --data-root /var/lib/svos; then + runuser -u svc-svos -- cp -p /var/lib/svos/config/instance.toml.pre-repo-dread-svtc /var/lib/svos/config/instance.toml; echo RESTORED; exit 1; fi + systemctl reload svos-kernel; sleep 4; curl -s http://127.0.0.1:8400/health; echo +verify: + - name: Health ok on the new generation; dev-dread and dev-svtc adopted + sudo: true + shell: | + sleep 8 + python3 -c " + import sqlite3 + c = sqlite3.connect('file:/var/lib/svos/state/svos.db?mode=ro', uri=True) + rows = c.execute(\"select name, repo, role, runtime, state, origin from seats where repo in ('repo-dread','repo-svtc')\").fetchall(); print(rows) + for r in c.execute(\"select id, at, action, object, summary from events where object in ('seat:dev-dread','seat:dev-svtc') or action='config_accepted' order by id desc limit 6\"): print(r) + assert len(rows) == 2, 'expected two seats'" + changed_when: "false"