Record passing terminal UX ISO acceptance and delivery artifacts
This commit is contained in:
@@ -6,10 +6,11 @@ desktops may use the same independent VM manager and viewers.
|
||||
|
||||
## 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,
|
||||
nested KVM and VM survival across user logout. See the
|
||||
[build and acceptance record](docs/releases/2026-10-13/acceptance.json).
|
||||
nested KVM, VM survival across logout, and the packaged download/run/open/menu
|
||||
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
|
||||
remain pending. Existing NixOS and VM disks were not installation or test targets.
|
||||
|
||||
|
||||
+8
-2
@@ -1,7 +1,7 @@
|
||||
# Install Hydra OS
|
||||
|
||||
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
|
||||
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
|
||||
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.
|
||||
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
|
||||
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
|
||||
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).
|
||||
- [ ] Implement downloader and explicit open/run commands, preserve existing CLI.
|
||||
- [ ] Test no accidental overwrite/start, headless operation, RAM preflight and
|
||||
- [x] Implement downloader and explicit open/run commands, preserve existing CLI.
|
||||
- [x] Test no accidental overwrite/start, headless operation, RAM preflight and
|
||||
view-only reconnection. Run scoped tests and commit only owned files.
|
||||
|
||||
## Task 2: Terminal menu and focused session handoff
|
||||
@@ -72,10 +72,10 @@ Interfaces:
|
||||
requested configured VM. Recovery delegates to menu; automatic clients remain
|
||||
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.
|
||||
- [ ] Implement terminal flow, visible command previews and recovery fallback.
|
||||
- [ ] Run scoped tests plus an isolated session probe where feasible; commit
|
||||
- [x] Implement terminal flow, visible command previews and recovery fallback.
|
||||
- [x] Run scoped tests plus an isolated session probe where feasible; commit
|
||||
owned files. Existing reserved chords and VM independence remain intact.
|
||||
|
||||
## 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.
|
||||
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.
|
||||
- [ ] Add original terminal logo and restrained summary configuration; retain
|
||||
- [x] Confirm Fastfetch's Gentoo atom, supported logo/config format and search path.
|
||||
- [x] Add original terminal logo and restrained summary configuration; retain
|
||||
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.
|
||||
|
||||
## Task 4: Integration and delivery
|
||||
|
||||
Owner: controller. README/install docs, update bundle, isolated validation.
|
||||
|
||||
- [ ] Review each task diff with concrete test reports; resolve findings.
|
||||
- [ ] Integrate task interfaces; document terminal usage and branded name.
|
||||
- [ ] 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] Review each task diff with concrete test reports; resolve findings.
|
||||
- [x] Integrate task interfaces; document terminal usage and branded name.
|
||||
- [x] Run complete suite and isolated smoke covering run/open/menu with new code.
|
||||
- [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.
|
||||
- [ ] 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.
|
||||
|
||||
@@ -1,13 +1,17 @@
|
||||
# Graphics and recovery verification
|
||||
|
||||
The [2026-10-13 preview record](releases/2026-10-13/acceptance.json) identifies
|
||||
the exact ISO, firmware and harness used for the passing twelve-check acceptance
|
||||
run. The unmodified ISO installed onto a fresh 32 GiB qcow2 disk and booted from
|
||||
The [terminal UX preview record](releases/2026-10-13-terminal-ux/acceptance.json)
|
||||
identifies the exact ISO and firmware used for the passing thirteen-check
|
||||
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
|
||||
overrides, installed services, DNS lookup, routed LAN-to-VM TCP, normal-user
|
||||
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,
|
||||
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;
|
||||
the earlier two-guest compositor and profile-refresh probes cover fullscreen
|
||||
|
||||
Reference in New Issue
Block a user