Record passing terminal UX ISO acceptance and delivery artifacts

This commit is contained in:
Codex
2026-10-13 18:10:39 +03:00
parent 1bc7965cca
commit be30e9dd49
9 changed files with 205 additions and 22 deletions
+4 -3
View File
@@ -6,10 +6,11 @@ desktops may use the same independent VM manager and viewers.
## Status ## Status
The first installable UEFI preview passed a complete disposable QEMU/KVM run: The terminal UX UEFI preview passed all 13 disposable QEMU/KVM acceptance checks:
installation, boot without the ISO, password login, persistent data, networking, installation, boot without the ISO, password login, persistent data, networking,
nested KVM and VM survival across user logout. See the nested KVM, VM survival across logout, and the packaged download/run/open/menu
[build and acceptance record](docs/releases/2026-10-13/acceptance.json). workflow with Fastfetch. See the
[release and acceptance record](docs/releases/2026-10-13-terminal-ux/README.md).
The first physical target is ASUS TUF Dash F15 FX517ZC; laptop hardware checks The first physical target is ASUS TUF Dash F15 FX517ZC; laptop hardware checks
remain pending. Existing NixOS and VM disks were not installation or test targets. remain pending. Existing NixOS and VM disks were not installation or test targets.
+8 -2
View File
@@ -1,7 +1,7 @@
# Install Hydra OS # Install Hydra OS
Hydra OS targets x86_64 UEFI systems. Disable Secure Boot for this first image. Hydra OS targets x86_64 UEFI systems. Disable Secure Boot for this first image.
Boot the ISO and open the recovery terminal. The live session uses a locked Boot the ISO and enter `:shell` in the terminal VM menu. The live session uses a locked
`hydra-live` account with local sudo access; changes in the live filesystem are `hydra-live` account with local sudo access; changes in the live filesystem are
volatile. The image provides no default SSH login or universal installed password. volatile. The image provides no default SSH login or universal installed password.
@@ -73,7 +73,13 @@ synthetic VM endpoint. Network namespaces and veth interfaces exist only inside
the disposable Hydra OS guest. When guest KVM is available, it launches a further the disposable Hydra OS guest. When guest KVM is available, it launches a further
fresh-disk QEMU as the installed account to exercise KVM, the bridge helper, fresh-disk QEMU as the installed account to exercise KVM, the bridge helper,
and private QMP; this checks VM launch, not a nested operating system boot. and private QMP; this checks VM launch, not a nested operating system boot.
It also logs the installed account out and back in, checking that the same VM, The installed normal account also exercises the packaged terminal menu,
downloads a complete nonboot ISO fixture from a private loopback HTTP server,
starts a scratch VM with `hydra run`, checks cache reuse and stable process/QMP
identity through `hydra open`, and verifies the default Fastfetch logo/name.
This fixture checks the command flow, not a nested guest OS boot.
The harness also logs the installed account out and back in, checking that the same VM,
private sockets and user audio services survive a measured interval without an private sockets and user audio services survive a measured interval without an
open login session. This establishes process/socket continuity, not audio playback. open login session. This establishes process/socket continuity, not audio playback.
@@ -0,0 +1,45 @@
# Hydra OS terminal UX preview
Source revision: `1bc7965ccaddb76abc78aafa82bb59358cf4dc0e`.
## Changes
- Terminal VM menu accepts a number, name, or the remembered selection. Opening a stopped guest starts it explicitly; opening a live guest reconnects its screen. The selected VM receives the initial workspace after refresh, while other QEMU processes continue independently.
- `hydra run URL --name NAME` downloads an ISO, creates a new guest and opens it. `hydra open NAME` reopens it; `hydra download URL` only downloads. Guided creation honors the same `--defaults` as direct CLI creation.
- Downloads show progress, support cancellation and optional publisher SHA-256, validate ISO9660 declared extents, and preserve existing files/profiles. Pure UDF images are explicitly unsupported by this initial downloader; ISO9660/UDF hybrids are accepted through ISO9660 validation. A format check does not establish publisher authenticity or arbitrary guest OS bootability.
- Visible system, boot, installer and viewer labels use **Hydra OS**. Fastfetch includes an original three-headed text logo and a concise host summary.
- A separate self-contained developer update bundle supports dry-run, exact checksums, backups and best-effort exception rollback. It does not replace guest disks, profiles, kernel or networking.
## Verification
- Complete source suite: **293 tests passed**, 44.788 seconds.
- Private two-guest focus probe: selecting Beta opens workspace 2; fresh keyboard focus, unchanged PID/UUID and continuing hidden counters survive refresh and compositor exit.
- Private general graphics/input smoke: reserved switching while keybindings are inhibited, manual USB selector without automatic attachment, view reconnection and media lifecycle passed. Requested display mode is 1920×1080 at 144000 mHz; physical refresh/input behavior is not inferred from that request.
- Independent task and final branch reviews completed; ISO extent validation, partial rollback reporting, shortcut help and custom menu defaults findings were resolved. No open review findings remain.
- The final full update zipapp was exercised against a disposable installed-root fixture: dry-run, apply, all installed hashes, retained original metadata and relocated CLI passed. The existing user installation has not been updated.
Rebuilt ISO boot/install acceptance: **all 13 checks passed**. The [complete report](acceptance.json) identifies the exact ISO and firmware. It includes real installation, ISO-free boot, password login, persistent data, the packaged terminal UX and Fastfetch, routed LAN-to-VM TCP, nested KVM, VM/socket survival through actual logout and normal shutdown. No check was skipped. The [Fastfetch capture](fastfetch.txt) comes from the installed test guest's default configuration.
The previous preview record at `../2026-10-13/` describes only the earlier ISO and is unchanged.
## Delivery and decisions
ISO: `hydra-os.iso`, 2,345,932,800 bytes. SHA-256:
```text
1ed2cc79482ac5b14794ed6d4c4caf46ecc54af6457c5d38bc662cd3c104fbad
```
Runtime update: `hydra-os-update-1bc7965.pyz`, 56,425 bytes. SHA-256:
```text
3ed9288451894277797aa34f105f1969af0a892b1ec14dc27b1fadeed2a7e7f3
```
See [terminal usage](../../terminal-usage.md) for applying it inside an installed Hydra guest, logging out and in again, installing Fastfetch on older images, and manually reversing an update. The bundle includes Fastfetch configuration/artwork, not its executable package.
The derivative OS identity is `ID=hydra-os`, `ID_LIKE=gentoo`; vendor `/usr/lib/os-release` remains intact. Consumers matching only `ID=gentoo` need to consider `ID_LIKE`. Technical hostname, bridge, storage paths and EFI bootloader identifier remain compatible.
The downloader deliberately rejects pure UDF because it cannot verify its declared extent with the implemented validator. Such media needs a supported alternative or a separate manual download/lower-level workflow. Publisher hashes remain advisable for whole-image integrity.
Physical ASUS graphics, touchpad, brightness keys, Wi-Fi, suspend, audio playback and actual USB-device redirection remain hardware checks. The updater is a trusted-source developer tool with backups, not a signed package manager or a guarantee of multi-file atomicity across power loss. No command channel into the existing manual test VM was available; staged delivery evidence does not mean that VM was updated.
@@ -0,0 +1,66 @@
{
"schema": 1,
"status": "passed",
"scratch": "/home/workspaces/ubuntu-dev/home/.cache/hydra-tests/hydra-iso-smoke-rjtq89i8",
"iso": "/home/workspaces/ubuntu-dev/home/Projects/hydra-os/build/artifacts/hydra-os.iso",
"iso_sha256": "1ed2cc79482ac5b14794ed6d4c4caf46ecc54af6457c5d38bc662cd3c104fbad",
"checks": {
"live_qmp_kvm": {
"status": "passed",
"output": "{\"enabled\": true, \"present\": true}"
},
"live_boot": {
"status": "passed",
"output": "/usr/bin/hydra\n/usr/bin/hydra-install\n/usr/bin/qemu-system-x86_64\n/usr/bin/qemu-img\n/usr/bin/remote-viewer\n/usr/bin/foot\n/usr/bin/labwc\nactive\nactive\nactive\n"
},
"real_installer": {
"status": "passed",
"output": "Installer completed via guest controlling TTY"
},
"live_poweroff": {
"status": "passed",
"output": "QEMU exited before ISO-free reboot"
},
"installed_qmp_kvm": {
"status": "passed",
"output": "{\"enabled\": true, \"present\": true}"
},
"installed_password_login": {
"status": "passed",
"output": "hydratest\n"
},
"installed_terminal_ux": {
"status": "passed",
"output": "{\"status\": \"passed\", \"uid\": 1000, \"normal_user\": \"hydratest\", \"launcher\": \"/usr/bin/hydra\", \"fixture_bytes\": 43008, \"iso_sha256\": \"aa66329c263f560f514c00a71551490dd6593ee7632404e072584e2803e0a1c7\", \"cache_reused\": true, \"http_requests\": [\"/fixture.iso\"], \"before\": {\"name\": \"ux-407c8d94\", \"uuid\": \"708c7761-5d45-540b-9e50-ecbccab235dd\", \"pid\": 664, \"process_start\": \"1365\", \"kvm\": true}, \"after_open\": {\"name\": \"ux-407c8d94\", \"uuid\": \"708c7761-5d45-540b-9e50-ecbccab235dd\", \"pid\": 664, \"process_start\": \"1365\", \"kvm\": true}, \"after_menu\": {\"name\": \"ux-407c8d94\", \"uuid\": \"708c7761-5d45-540b-9e50-ecbccab235dd\", \"pid\": 664, \"process_start\": \"1365\", \"kvm\": true}, \"memory_mib\": 512, \"cpus\": 1, \"disk_size\": \"64M\", \"network\": \"bridge\", \"empty_menu\": \"\\nHydra OS \\u2014 virtual machines\\n\\nNo VM profiles. Use :run to create one from an ISO path or direct URL.\\n\\nNumber/name opens one VM; Enter opens the last (*) or only VM.\\n:run / :new :download :network :shell :help :refresh :quit\\n:shutdown NAME requests guest shutdown; :detach NAME removes ISO while stopped.\\nhydra> \", \"running_menu\": \"\\nHydra OS \\u2014 virtual machines\\n\\n # Name State RAM\\n 1 ux-407c8d94 running 512 MiB\\n\\nNumber/name opens one VM; Enter opens the last (*) or only VM.\\n:run / :new :download :network :shell :help :refresh :quit\\n:shutdown NAME requests guest shutdown; :detach NAME removes ISO while stopped.\\nhydra> \", \"run_output\": \"\", \"download_output\": \"/tmp/hux-cov4pymn/cache/hydra/iso/4341afe870c3591f6581e2c0c00554e8876cfe2f669a6208636261a2f6b069ee-fixture.iso\\n\", \"fastfetch_command\": [\"fastfetch\", \"--pipe\", \"false\", \"--show-errors\"], \"fastfetch_default_config_sha256\": \"2af12ce007705f039870867c89b0fc6f90bcf6c6b29c04b63ab75f345419b1a1\", \"fastfetch_logo_sha256\": \"ddd6d11f785aac99591fbcc5959e9f553287514459832131c70e48525ad76868\", \"fastfetch_output\": \" /\\\\ /\\\\ /\\\\ hydratest@hydra-os\\n .-(o > .-(o > .-(o > OS: Hydra OS x86_64\\n/ / / / / / Kernel: Linux 6.18.54-gentoo-dist-bin\\n\\\\ \\\\______\\\\ \\\\______\\\\ \\\\ Uptime: 12 seconds\\n \\\\ \\\\ / CPU: 12th Gen Intel(R) Core(TM) i7-12650H (2) @ 2.69 GHz\\n '---. .---' Memory: 426.05 MiB / 3.80 GiB (11%)\\n \\\\ /\\\\/\\\\ / Disk (/): 6.98 GiB / 30.34 GiB (23%) - ext4\\n ___\\\\/ \\\\/___ Local IP (enp0s2): 10.0.2.15/24\\n /______________\\\\\\n H Y D R A O S\\n\\n\", \"scope\": \"Packaged installed CLI, cache, branding and live nested QMP/KVM; nonboot ISO fixture, no nested OS boot or performance claim\", \"cleanup\": \"Only the verified private fixture VM stopped through hydra stop --force\"}\n"
},
"disk_persistence": {
"status": "passed",
"output": "Sentinel content verified from command output frame"
},
"installed_contract": {
"status": "passed",
"output": "active\nactive\nactive\nactive\n3: hydrabr0 inet 10.203.0.1/24 brd 10.203.0.255 scope global noprefixroute hydrabr0\\ valid_lft forever preferred_lft forever\ndefault via 10.0.2.2 dev enp0s2 proto dhcp src 10.0.2.15 metric 100 \ntable ip hydra_nat {\n\tchain postrouting {\n\t\ttype nat hook postrouting priority srcnat; policy accept;\n\t\tip saddr 10.203.0.0/24 oifname != \"hydrabr0\" masquerade\n\t}\n}\nconnected\n198.18.0.41 STREAM gentoo.org\n198.18.0.41 DGRAM \n198.18.0.41 RAW \n/usr/bin/hydra\n/usr/bin/hydra-install\n/usr/bin/qemu-system-x86_64\n/usr/bin/qemu-img\n/usr/bin/remote-viewer\n/usr/bin/foot\n/usr/bin/labwc\n\u001b[1;34musage: \u001b[0m\u001b[1;35mhydra\u001b[0m [\u001b[32m-h\u001b[0m] [\u001b[36m--config \u001b[33mCONFIG\u001b[0m] [\u001b[36m--state \u001b[33mSTATE\u001b[0m] [\u001b[36m--runtime \u001b[33mRUNTIME\u001b[0m]\n [\u001b[36m--defaults \u001b[33mDEFAULTS\u001b[0m]\n \u001b[32m{menu,download,run,open,add,media,list,status,start,shutdown,stop,view,session,_session-helper} ...\u001b[0m\n\nHydra OS independent VM manager\n\n\u001b[1;34mpositional arguments:\u001b[0m\n \u001b[1;32m{menu,download,run,open,add,media,list,status,start,shutdown,stop,view,session,_session-helper}\u001b[0m\n \u001b[1;32mmenu\u001b[0m Open the terminal VM menu\n \u001b[1;32mdownload\u001b[0m Download and validate a direct ISO URL\n \u001b[1;32mrun\u001b[0m Create, start and display a VM from a local ISO or\n HTTP(S) URL\n \u001b[1;32mopen\u001b[0m Start a stopped VM or reconnect a running VM\n \u001b[1;32madd\u001b[0m Create a VM profile without starting it\n \u001b[1;32mmedia\u001b[0m Attach or detach installation media while stopped\n \u001b[1;32mlist\u001b[0m List configured VMs\n \u001b[1;32mstatus\u001b[0m Query VM state through private QMP\n \u001b[1;32mview\u001b[0m Connect a viewer without changing VM power\n \u001b[1;32msession\u001b[0m Start the minimal Hydra OS labwc session\n \u001b[1;32m_session-helper\u001b[0m ==SUPPRESS==\n\n\u001b[1;34moptions:\u001b[0m\n \u001b[1;32m-h\u001b[0m, \u001b[1;36m--help\u001b[0m show this help message and exit\n \u001b[1;36m--config\u001b[0m \u001b[1;33mCONFIG\u001b[0m\n \u001b[1;36m--state\u001b[0m \u001b[1;33mSTATE\u001b[0m\n \u001b[1;36m--runtime\u001b[0m \u001b[1;33mRUNTIME\u001b[0m\n \u001b[1;36m--defaults\u001b[0m \u001b[1;33mDEFAULTS\u001b[0m Distribution preferences for newly created profiles\nQEMU emulator version 10.2.3\nCopyright (c) 2003-2025 Fabrice Bellard and the QEMU Project developers\nqemu-img version 10.2.3\nCopyright (c) 2003-2025 Fabrice Bellard and the QEMU Project developers\n/usr/share/edk2/OvmfX64/OVMF_CODE.fd\n"
},
"lan_to_vm_tcp": {
"status": "passed",
"output": "PASS: routed new LAN-to-VM TCP connection on arbitrary port 43117\n"
},
"nested_kvm": {
"status": "passed",
"output": "Formatting '/tmp/hydra-nested-pmtnvwzh/fresh.qcow2', fmt=qcow2 cluster_size=65536 extended_l2=off compression_type=zlib size=67108864 lazy_refcounts=off refcount_bits=16\nPASS: normal-user nested KVM VM and bridge helper; fresh qcow2; private QMP\n"
},
"installed_user_logout": {
"status": "passed",
"output": "{\"status\": \"passed\", \"real_logout\": true, \"no_open_logins\": true, \"survival_seconds\": 15, \"same_vm\": {\"name\": \"logout-bc617dc9\", \"uuid\": \"0c031012-0f16-55bb-98c5-ed7352000c2c\", \"pid\": 943, \"process_start\": \"2192\", \"directories\": {\"/run/user/1000/hydra-logout-bc617dc9\": [46, 52, 16832], \"/run/user/1000/hydra-logout-bc617dc9/logout-bc617dc9\": [46, 53, 16832]}, \"sockets\": {\"qmp\": [46, 57, 1000, 49640], \"spice\": [46, 56, 1000, 49640], \"pipewire\": [46, 28, 1000, 49590], \"pulse\": [46, 27, 1000, 49590]}, \"audio_services\": {\"pipewire.service\": \"InvocationID=aac07ae95f15474894fc94690edfa62c\\nExecMainPID=916\\n\", \"pipewire-pulse.service\": \"InvocationID=55735e4672f2412398cfd82086b21030\\nExecMainPID=918\\n\", \"wireplumber.service\": \"InvocationID=1dc399b7b35c42c7bb43f44923805472\\nExecMainPID=917\\n\"}}, \"audio_scope\": \"Socket and service continuity only; signal/playback untested\"}\n"
},
"installed_poweroff": {
"status": "passed",
"output": "Normal installed guest shutdown"
}
},
"physical_hardware": "pending",
"nested_scope": "Normal-user KVM VM launch, bridge helper and QMP; no nested guest OS boot",
"ovmf_code_sha256": "f3ff7e73448ed2845ee15356f394882f5618eb5dab92c9a30ec6ee0e1468553a",
"ovmf_vars_input_sha256": "6ed987af3a3c155be71665f510eae3e007eda9b8b94afd59d45e91c4a11565cc",
"completed_utc": "2026-10-13T15:08:23Z"
}
@@ -0,0 +1,33 @@
{
"source_commit": "1bc7965ccaddb76abc78aafa82bb59358cf4dc0e",
"iso": {
"file": "hydra-os.iso",
"size": 2345932800,
"sha256": "1ed2cc79482ac5b14794ed6d4c4caf46ecc54af6457c5d38bc662cd3c104fbad"
},
"runtime_update": {
"status": "passed",
"bundle": "hydra-os-update-1bc7965.pyz",
"source_commit": "1bc7965ccaddb76abc78aafa82bb59358cf4dc0e",
"sha256": "3ed9288451894277797aa34f105f1969af0a892b1ec14dc27b1fadeed2a7e7f3",
"payload_files": 16,
"checks": [
"dry_run_no_changes",
"zipapp_apply",
"all_payload_hashes",
"original_image_manifest",
"vendor_release_preserved",
"branded_release",
"relocated_cli"
],
"existing_user_guest_modified": false
},
"kernel": "6.18.54-gentoo-dist-bin",
"packages": 561,
"tests": {
"unit": 293,
"iso_acceptance": 13,
"iso_skipped": 0
},
"physical_hardware": "pending"
}
@@ -0,0 +1,11 @@
/\ /\ /\ hydratest@hydra-os
.-(o > .-(o > .-(o > OS: Hydra OS x86_64
/ / / / / / Kernel: Linux 6.18.54-gentoo-dist-bin
\ \______\ \______\ \ Uptime: 12 seconds
\ \ / CPU: 12th Gen Intel(R) Core(TM) i7-12650H (2) @ 2.69 GHz
'---. .---' Memory: 426.05 MiB / 3.80 GiB (11%)
\ /\/\ / Disk (/): 6.98 GiB / 30.34 GiB (23%) - ext4
___\/ \/___ Local IP (enp0s2): 10.0.2.15/24
/______________\
H Y D R A O S
@@ -0,0 +1,17 @@
{
"status": "passed",
"bundle": "hydra-os-update-1bc7965.pyz",
"source_commit": "1bc7965ccaddb76abc78aafa82bb59358cf4dc0e",
"sha256": "3ed9288451894277797aa34f105f1969af0a892b1ec14dc27b1fadeed2a7e7f3",
"payload_files": 16,
"checks": [
"dry_run_no_changes",
"zipapp_apply",
"all_payload_hashes",
"original_image_manifest",
"vendor_release_preserved",
"branded_release",
"relocated_cli"
],
"existing_user_guest_modified": false
}
@@ -51,10 +51,10 @@ Interfaces:
- Manifest defaults from `HYDRA_SESSION_MANIFEST` when valid; launch errors - Manifest defaults from `HYDRA_SESSION_MANIFEST` when valid; launch errors
remain actionable and never silently restart an unknown/foreign VM. remain actionable and never silently restart an unknown/foreign VM.
- [ ] Write and observe failing tests using a local HTTP fixture (ISO, HTML, - [x] Write and observe failing tests using a local HTTP fixture (ISO, HTML,
truncation, checksum, cancellation, cache reuse, collision). truncation, checksum, cancellation, cache reuse, collision).
- [ ] Implement downloader and explicit open/run commands, preserve existing CLI. - [x] Implement downloader and explicit open/run commands, preserve existing CLI.
- [ ] Test no accidental overwrite/start, headless operation, RAM preflight and - [x] Test no accidental overwrite/start, headless operation, RAM preflight and
view-only reconnection. Run scoped tests and commit only owned files. view-only reconnection. Run scoped tests and commit only owned files.
## Task 2: Terminal menu and focused session handoff ## Task 2: Terminal menu and focused session handoff
@@ -72,10 +72,10 @@ Interfaces:
requested configured VM. Recovery delegates to menu; automatic clients remain requested configured VM. Recovery delegates to menu; automatic clients remain
view-only. Errors stay in menu, and operations use fresh runtime profiles. view-only. Errors stay in menu, and operations use fresh runtime profiles.
- [ ] Write failing menu/refresh tests for stopped/running selection, unknown - [x] Write failing menu/refresh tests for stopped/running selection, unknown
identity, names such as s/q, empty/invalid profiles and second-workspace focus. identity, names such as s/q, empty/invalid profiles and second-workspace focus.
- [ ] Implement terminal flow, visible command previews and recovery fallback. - [x] Implement terminal flow, visible command previews and recovery fallback.
- [ ] Run scoped tests plus an isolated session probe where feasible; commit - [x] Run scoped tests plus an isolated session probe where feasible; commit
owned files. Existing reserved chords and VM independence remain intact. owned files. Existing reserved chords and VM independence remain intact.
## Task 3: Hydra OS branding and Fastfetch ## Task 3: Hydra OS branding and Fastfetch
@@ -84,20 +84,20 @@ Owned: `image/packages`, `image/rootfs` (Fastfetch config/logo/motd only),
`hydra/image.py`, `image/grub.cfg`, `session` metadata, new branding tests. `hydra/image.py`, `image/grub.cfg`, `session` metadata, new branding tests.
Coordinate session/CLI visible names with their owners; do not edit their files. Coordinate session/CLI visible names with their owners; do not edit their files.
- [ ] Confirm Fastfetch's Gentoo atom, supported logo/config format and search path. - [x] Confirm Fastfetch's Gentoo atom, supported logo/config format and search path.
- [ ] Add original terminal logo and restrained summary configuration; retain - [x] Add original terminal logo and restrained summary configuration; retain
technical IDs while updating visible OS/boot/session labels. technical IDs while updating visible OS/boot/session labels.
- [ ] Verify config with actual Fastfetch in a temporary/container environment, - [x] Verify config with actual Fastfetch in a temporary/container environment,
preview logo, and test resulting image metadata. Commit owned files. preview logo, and test resulting image metadata. Commit owned files.
## Task 4: Integration and delivery ## Task 4: Integration and delivery
Owner: controller. README/install docs, update bundle, isolated validation. Owner: controller. README/install docs, update bundle, isolated validation.
- [ ] Review each task diff with concrete test reports; resolve findings. - [x] Review each task diff with concrete test reports; resolve findings.
- [ ] Integrate task interfaces; document terminal usage and branded name. - [x] Integrate task interfaces; document terminal usage and branded name.
- [ ] Run complete suite and isolated smoke covering run/open/menu with new code. - [x] Run complete suite and isolated smoke covering run/open/menu with new code.
- [ ] Prepare a reversible guest update with exact file inventory and checksums; - [x] Prepare a reversible guest update with exact file inventory and checksums;
preserve old ISO and test disk. Assess cached image rebuild and test new output. preserve old ISO and test disk. Assess cached image rebuild and test new output.
- [ ] Review whole branch, commit/publish authorized repository changes and report - [x] Review whole branch, commit/publish authorized repository changes and report
exactly which artifacts and guest states have actually been updated. exactly which artifacts and guest states have actually been updated.
+7 -3
View File
@@ -1,13 +1,17 @@
# Graphics and recovery verification # Graphics and recovery verification
The [2026-10-13 preview record](releases/2026-10-13/acceptance.json) identifies The [terminal UX preview record](releases/2026-10-13-terminal-ux/acceptance.json)
the exact ISO, firmware and harness used for the passing twelve-check acceptance identifies the exact ISO and firmware used for the passing thirteen-check
run. The unmodified ISO installed onto a fresh 32 GiB qcow2 disk and booted from acceptance run. The unmodified ISO installed onto a fresh 32 GiB qcow2 disk and booted from
that disk with no ISO attached. Password login, persistent data, removed live that disk with no ISO attached. Password login, persistent data, removed live
overrides, installed services, DNS lookup, routed LAN-to-VM TCP, normal-user overrides, installed services, DNS lookup, routed LAN-to-VM TCP, normal-user
nested KVM/bridge access and normal shutdown passed. An actual logout followed nested KVM/bridge access and normal shutdown passed. An actual logout followed
by 15 seconds without an open login and a new login preserved the same VM, by 15 seconds without an open login and a new login preserved the same VM,
QMP/SPICE sockets and user audio services. Audio playback was not measured. QMP/SPICE sockets and user audio services. Audio playback was not measured.
The installed normal account also exercised download/cache/run/open/menu using
the packaged commands and verified the default Fastfetch rendering. Its ISO
fixture is intentionally nonbootable; nested guest OS boot is not inferred.
The [first preview record](releases/2026-10-13/acceptance.json) remains unchanged.
Live graphical recovery was also observed through a private QEMU screenshot; Live graphical recovery was also observed through a private QEMU screenshot;
the earlier two-guest compositor and profile-refresh probes cover fullscreen the earlier two-guest compositor and profile-refresh probes cover fullscreen