Publish verified Hydra OS 0.2.0 runtime and laptop acceptance records
This commit is contained in:
@@ -0,0 +1,116 @@
|
||||
# Hydra OS 0.2.0 — installation, updates and recovery
|
||||
|
||||
**The source suite passed 431 tests. The final ISO passed 13 whole-disk checks
|
||||
and 23 preserved-partition/recovery checks. No acceptance check was skipped.**
|
||||
|
||||
Hydra OS is a Gentoo host for concurrent virtual desktops, with a minimal labwc
|
||||
session and terminal controls. This release adds installation into selected
|
||||
partitions, signed runtime updates, offline Btrfs base recovery and read-only
|
||||
laptop diagnostics.
|
||||
|
||||
## Verification
|
||||
|
||||
| Item | Final result |
|
||||
| --- | --- |
|
||||
| Image and runtime source | `ebeebc7fb1aed07a5f50bc62374365d614953dad` |
|
||||
| ISO | `hydra-os.iso`, 2,380,406,784 bytes |
|
||||
| ISO SHA-256 | `451e058228d7cbea87b5301ae6502b6be609cf7f52cc7c9e6fb477822501389b` |
|
||||
| Signed runtime | Version `0.2.0`, sequence `1` |
|
||||
| Complete source suite | `431` passed in `26.048` seconds |
|
||||
| Whole-disk UEFI/KVM acceptance | 13 passed; 0 skipped |
|
||||
| Preserved-partition/recovery UEFI/KVM acceptance | 23 passed; 0 skipped |
|
||||
|
||||
Independent final integration review found no actionable issues and verified all
|
||||
19 signed runtime payload files against source bytes/modes and the pinned key.
|
||||
|
||||
The final [artifact record](artifacts.json), [whole-disk report](whole-disk-acceptance.json)
|
||||
and [laptop report](laptop-acceptance.json) identify the exact ISO, firmware and
|
||||
harnesses. The [image audit](image-audit.json) checks packaged files, including the
|
||||
independent updater and pinned key, against source hashes and required ownership
|
||||
and modes. The [rootfs manifest](rootfs-manifest.json) records source inputs and
|
||||
package versions; [Fastfetch](fastfetch.txt) captures the final installed guest.
|
||||
|
||||
Final acceptance uses fresh private virtual disks and the final ISO. Earlier
|
||||
diagnostic runs against an older ISO do not establish this release's acceptance.
|
||||
Both installed boot sequences remove ISO media. The laptop sequence checks GPT
|
||||
boundaries, foreign partition bytes and foreign/fallback EFI bytes across all
|
||||
boots. It checks BootOrder immediately around installation, checkpoint, restore
|
||||
and each deliberate boot-selection operation. OVMF may prune an empty DVD entry
|
||||
between boots; the report does not claim identical BootOrder across reboots.
|
||||
|
||||
## Installation and recovery
|
||||
|
||||
Existing-partition installation formats only the selected root partition and
|
||||
retains the existing ESP. It supports ext4 or Btrfs; Btrfs uses `@root`, `@home` and
|
||||
`@snapshots`. From the live ISO's `:shell`, inspect the devices and request a plan:
|
||||
|
||||
```sh
|
||||
sudo hydra-install --root-partition /dev/CHOSEN_ROOT \
|
||||
--esp-partition /dev/CHOSEN_ESP --user YOUR_USER --root-fs btrfs
|
||||
```
|
||||
|
||||
These are placeholders; no physical target partition has been selected. Execution
|
||||
requires `--execute --confirm-format /dev/CHOSEN_ROOT`. The ESP needs room for
|
||||
`EFI/HydraOS`; select its `grubx64.efi` loader in firmware, or explicitly request
|
||||
`--register-boot-entry` to create an entry without changing BootOrder. See the
|
||||
[installation guide](../../install.md).
|
||||
|
||||
Boot the trusted live ISO with the installed filesystems unmounted to create or
|
||||
restore a Btrfs checkpoint:
|
||||
|
||||
```sh
|
||||
sudo hydra-system checkpoint --root-uuid ROOT_UUID --esp-partuuid ESP_PARTUUID \
|
||||
--name before-update --execute --confirm-root-uuid ROOT_UUID
|
||||
sudo hydra-system list --root-uuid ROOT_UUID
|
||||
sudo hydra-system restore --root-uuid ROOT_UUID --checkpoint CHECKPOINT_ID \
|
||||
--execute --confirm-root-uuid ROOT_UUID
|
||||
```
|
||||
|
||||
Omit execution and confirmation options to inspect a plan first. Recovery restores
|
||||
the root, kernel, Portage state and owned EFI loader together. Current HOME and VM
|
||||
data stored there remain unchanged. An interrupted restore resumes with the same
|
||||
checkpoint ID. Acceptance upgrades a local Portage fixture, damages the actual
|
||||
kernel/owned loader, sends SIGKILL after a durable restore transition, resumes in
|
||||
a fresh process, then verifies exact restored base hashes and boots without ISO.
|
||||
This proves exact kernel restoration, not an upgrade between two kernel versions.
|
||||
|
||||
Checkpoints share the original disk and are not external backups. Restoring the
|
||||
root also restores runtime update receipts and their replay floor. See
|
||||
[base recovery](../../system-recovery.md).
|
||||
|
||||
## Updates and diagnostics
|
||||
|
||||
```sh
|
||||
hydra update check
|
||||
sudo hydra update apply
|
||||
hydra update status
|
||||
sudo hydra update rollback TRANSACTION
|
||||
sudo hydra-update-recover
|
||||
hydra doctor
|
||||
```
|
||||
|
||||
The [signed runtime manifest](../../../releases/stable/manifest.json) describes a
|
||||
passive payload verified against the image's independently pinned Ed25519 key.
|
||||
The public repository serves the release without a separate update server.
|
||||
The standalone recovery command works independently of a damaged normal CLI.
|
||||
Acceptance uses a disposable TEST key in its private guest, refuses a tampered
|
||||
archive, and verifies apply, rollback and fresh-process recovery after SIGKILL.
|
||||
The original pinned key is restored afterward.
|
||||
|
||||
The payload updates Hydra runtime and branding. Gentoo packages/kernel, networking,
|
||||
guest data, the updater engine and its trust key are outside its scope. Log out
|
||||
and in after applying or rolling back to load changed session code. Older images
|
||||
without the trusted updater need a verified new image or a separately verified
|
||||
bootstrap. See [update scope and trust](../../updates.md).
|
||||
|
||||
`hydra doctor` reports observations without changing settings. Physical ASUS
|
||||
FX517ZC checks remain pending: live boot, Wi-Fi/Ethernet, audio playback, touchpad
|
||||
and input capture, brightness, USB, suspend/resume and delivered display refresh.
|
||||
The first image requires Secure Boot disabled. No physical disk, existing NixOS
|
||||
installation or existing user VM disk was an installation target. VM acceptance
|
||||
does not establish physical graphics performance or audio playback.
|
||||
|
||||
See [acceptance instructions](../../laptop-acceptance.md) to repeat both harnesses
|
||||
with the recorded source, ISO and firmware inputs. ISO files, test disks, private
|
||||
build records and raw logs remain outside Git; this directory contains the
|
||||
public verification record.
|
||||
@@ -0,0 +1,80 @@
|
||||
{
|
||||
"schema": 1,
|
||||
"product": "Hydra OS",
|
||||
"version": "0.2.0",
|
||||
"tag": "0.2.0",
|
||||
"source_commit": "ebeebc7fb1aed07a5f50bc62374365d614953dad",
|
||||
"iso": {
|
||||
"name": "hydra-os.iso",
|
||||
"size": 2380406784,
|
||||
"sha256": "451e058228d7cbea87b5301ae6502b6be609cf7f52cc7c9e6fb477822501389b"
|
||||
},
|
||||
"runtime": {
|
||||
"version": "0.2.0",
|
||||
"sequence": 1,
|
||||
"payload_files": 19,
|
||||
"artifacts": [
|
||||
{
|
||||
"name": "manifest.json",
|
||||
"size": 2831,
|
||||
"sha256": "622eadd77d5eb18ba80d81f60f6d7ba4546ce8a4ba276152cf0b2b38d1c4ba03"
|
||||
},
|
||||
{
|
||||
"name": "manifest.sig",
|
||||
"size": 64,
|
||||
"sha256": "4102a9f1d0f1ac00e848c00a9a37644647789a3e20b70aa41f1fd4a7e7a6974a"
|
||||
},
|
||||
{
|
||||
"name": "runtime.zip",
|
||||
"size": 71577,
|
||||
"sha256": "9284edd5de37f621955189f3d317ebcfa76f60a4b6e1f481361b6aad1967f4f8"
|
||||
}
|
||||
],
|
||||
"public_key_der_sha256": "fb08fd4892c5e4de0dbda82ef43f911a423a24d0f82bdf70f7b6fcaeb1d9ad51"
|
||||
},
|
||||
"kernel": "6.18.54-gentoo-dist-bin",
|
||||
"packages": 581,
|
||||
"verification": {
|
||||
"source_suite": {
|
||||
"passed": 431,
|
||||
"failed": 0,
|
||||
"seconds": 26.048
|
||||
},
|
||||
"whole_disk": {
|
||||
"passed": 13,
|
||||
"skipped": 0
|
||||
},
|
||||
"laptop": {
|
||||
"passed": 23,
|
||||
"skipped": 0
|
||||
},
|
||||
"physical_hardware": "pending"
|
||||
},
|
||||
"evidence": [
|
||||
{
|
||||
"name": "whole-disk-acceptance.json",
|
||||
"size": 6797,
|
||||
"sha256": "dee6f6736a204126ff9594a258f14fe79b0edb7b24129afa5519ba5549fa8187"
|
||||
},
|
||||
{
|
||||
"name": "laptop-acceptance.json",
|
||||
"size": 181161,
|
||||
"sha256": "15e4ccbef7696740debdf53b5c942cdc897d89467fb5583a365c143b3fd4e4a7"
|
||||
},
|
||||
{
|
||||
"name": "image-audit.json",
|
||||
"size": 5146,
|
||||
"sha256": "697cd71dab2b4a8e299f9fcbfe133c418efb712e92b8bcd459455e18c2249024"
|
||||
},
|
||||
{
|
||||
"name": "fastfetch.txt",
|
||||
"size": 1132,
|
||||
"sha256": "3e7f54fbd70a46dd8c655f5ff10e2afbbeac70608efdea12b3822a3a79567a9b"
|
||||
},
|
||||
{
|
||||
"name": "rootfs-manifest.json",
|
||||
"size": 142178,
|
||||
"sha256": "126c66d84b7c2160a517cbd0c3649630982a4d734e113ecdd6ee48e0859f1630"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
= = hydratest@hydra-os
|
||||
=@ @= OS: Hydra OS x86_64
|
||||
:@+ :: +@: Kernel: Linux 6.18.54-gentoo-dist-bin
|
||||
:-*@%*@@*%@#-: Uptime: 7 seconds
|
||||
. +: -@@@@@@@@@@- :+ . CPU: 12th Gen Intel(R) Core(TM) i7-12650H (2) @ 2.69 GHz
|
||||
=*:+#= =@*+@@@@+*@= =#+-*= Memory: 425.80 MiB / 3.80 GiB (11%)
|
||||
#@#@@##= .%@=*@@*=@%. =##@@#@# Disk (/): 7.11 GiB / 30.34 GiB (23%) - ext4
|
||||
#@@@@@@@@#=. .@@@@@@. .=#@@@@@@@@# Local IP (enp0s2): 10.0.2.15/24
|
||||
.%%=:%@@@@@@@*: +%@@%+ :*@@@@@@@%:=%%.
|
||||
.#@##@@@%*@@@@#: =@@= :#@@@@*%@@@##@#.
|
||||
@%@%=-%@# .*@@@@. .%==%. .@@@@*. #@%-=%@%@
|
||||
=%-:-%+ #@@@# .@@@@. #@@@# +%-:=%+
|
||||
-%- @@@@% =@@@@= %@@@@ -%-
|
||||
.%@@@@. @@@@@@ .@@@@%.
|
||||
-@@@@@: *%@@@@%* :@@@@@-
|
||||
.@@@@@* .-%@@@@%-. *@@@@@.
|
||||
*@@@@@%:+@@@@@@@@+:%@@@@@*
|
||||
=#%@@@@@@@@@@@@@@@@@@@@%#=
|
||||
.*@@@@@@@@@@@@@@@@@@*.
|
||||
.:-=+*#@@#*+=-:.
|
||||
|
||||
H Y D R A O S
|
||||
@@ -0,0 +1,165 @@
|
||||
{
|
||||
"files": {
|
||||
"usr/lib/hydra/hydra/__init__.py": {
|
||||
"sha256": "2775bedc6bc41a09d8a492e99a38ce147730d979867316a672f0049f055c76a1",
|
||||
"mode": 420,
|
||||
"uid": 0,
|
||||
"gid": 0
|
||||
},
|
||||
"usr/lib/hydra/hydra/build.py": {
|
||||
"sha256": "7d130a0ce0eed8913d8402c28824b1dff139d33c6482d9616a01d30f96cd65ac",
|
||||
"mode": 420,
|
||||
"uid": 0,
|
||||
"gid": 0
|
||||
},
|
||||
"usr/lib/hydra/hydra/cli.py": {
|
||||
"sha256": "a9399544462279af97542de068907f6f2adb634874648338bdb6094606c03c78",
|
||||
"mode": 420,
|
||||
"uid": 0,
|
||||
"gid": 0
|
||||
},
|
||||
"usr/lib/hydra/hydra/doctor.py": {
|
||||
"sha256": "9d759958c48b56a5f58acaab301c8c6f49c3a6c2ea7d434ee7d17bc420ba51c2",
|
||||
"mode": 420,
|
||||
"uid": 0,
|
||||
"gid": 0
|
||||
},
|
||||
"usr/lib/hydra/hydra/image.py": {
|
||||
"sha256": "b4b77ad87ceba929ed39bee2b02852682718788dacbbbb550ee1a50c216e8070",
|
||||
"mode": 420,
|
||||
"uid": 0,
|
||||
"gid": 0
|
||||
},
|
||||
"usr/lib/hydra/hydra/install_storage.py": {
|
||||
"sha256": "3c59d5f295d6bdb86e6decbae668db67cc2f2d0b8c6abe49ef07f35d8aef7aee",
|
||||
"mode": 420,
|
||||
"uid": 0,
|
||||
"gid": 0
|
||||
},
|
||||
"usr/lib/hydra/hydra/installer.py": {
|
||||
"sha256": "3d038216c37e248db5ad8a76863663d701d5ef497cb5be52658c9382c92f0da5",
|
||||
"mode": 420,
|
||||
"uid": 0,
|
||||
"gid": 0
|
||||
},
|
||||
"usr/lib/hydra/hydra/launch.py": {
|
||||
"sha256": "e9e40af8cfb2aff39306735e6ad70c91d7f93cb01d1451daecbbebda8362c4b0",
|
||||
"mode": 420,
|
||||
"uid": 0,
|
||||
"gid": 0
|
||||
},
|
||||
"usr/lib/hydra/hydra/media.py": {
|
||||
"sha256": "4c85798a81e767605e8e0a1cd0eb21062f625c49dd71df511b2b67db375d95af",
|
||||
"mode": 420,
|
||||
"uid": 0,
|
||||
"gid": 0
|
||||
},
|
||||
"usr/lib/hydra/hydra/menu.py": {
|
||||
"sha256": "ba99dcc9ed33543d54ad61d13b6c5f02c2d4c6d60f6c2cf9c5ceeb0634a88f5c",
|
||||
"mode": 420,
|
||||
"uid": 0,
|
||||
"gid": 0
|
||||
},
|
||||
"usr/lib/hydra/hydra/profiles.py": {
|
||||
"sha256": "7e3074086172bfb1ebde89996a2ca9be4512250e667e1375b9086d7148f947c3",
|
||||
"mode": 420,
|
||||
"uid": 0,
|
||||
"gid": 0
|
||||
},
|
||||
"usr/lib/hydra/hydra/qmp.py": {
|
||||
"sha256": "e86da77103b991cf7f0104e701555ebbc91e2b526d6b7ec6db76209f264af024",
|
||||
"mode": 420,
|
||||
"uid": 0,
|
||||
"gid": 0
|
||||
},
|
||||
"usr/lib/hydra/hydra/runtime.py": {
|
||||
"sha256": "d72353ebd675135801a3686a69ee8a193b87d5787f691917a46c99de0555d5d3",
|
||||
"mode": 420,
|
||||
"uid": 0,
|
||||
"gid": 0
|
||||
},
|
||||
"usr/lib/hydra/hydra/session.py": {
|
||||
"sha256": "729d6cd263f9828850018b335917a15f03d2a2bda0e38e73f842d3cfc196db1d",
|
||||
"mode": 420,
|
||||
"uid": 0,
|
||||
"gid": 0
|
||||
},
|
||||
"usr/lib/hydra/hydra/system_recovery.py": {
|
||||
"sha256": "957d9b8ab422b446f1f7c0f922c1629a0728e0043bd0a3ade36495f4200d5c05",
|
||||
"mode": 420,
|
||||
"uid": 0,
|
||||
"gid": 0
|
||||
},
|
||||
"usr/lib/hydra/hydra/update_engine.py": {
|
||||
"sha256": "30e4175d9ab894d9ee0cfb825ff43bb376e82857241076554335a9c64e5e9258",
|
||||
"mode": 420,
|
||||
"uid": 0,
|
||||
"gid": 0
|
||||
},
|
||||
"usr/lib/hydra-update/engine.py": {
|
||||
"sha256": "30e4175d9ab894d9ee0cfb825ff43bb376e82857241076554335a9c64e5e9258",
|
||||
"mode": 420,
|
||||
"uid": 0,
|
||||
"gid": 0
|
||||
},
|
||||
"usr/bin/hydra-update": {
|
||||
"sha256": "faaf0c932e6d8009095c7d7c49c3b09eff9563c8537ae0944fc6fbd7daae7ec8",
|
||||
"mode": 493,
|
||||
"uid": 0,
|
||||
"gid": 0
|
||||
},
|
||||
"usr/bin/hydra-update-recover": {
|
||||
"sha256": "b5a66ce468f022c170276de4add3970b22c3bff8caf126dc23e85d655d482acd",
|
||||
"mode": 493,
|
||||
"uid": 0,
|
||||
"gid": 0
|
||||
},
|
||||
"etc/hydra/update.pub": {
|
||||
"sha256": "42cc72480eefa9ee1e5250451c16750710af4b45804e5c821b359780a7f2bed3",
|
||||
"mode": 420,
|
||||
"uid": 0,
|
||||
"gid": 0
|
||||
},
|
||||
"usr/share/hydra/fastfetch.txt": {
|
||||
"sha256": "a0c67cfbc66a3097fb3ac9b8ec16f75a8b59d8a8994ec43db144426fc089fa67",
|
||||
"mode": 420,
|
||||
"uid": 0,
|
||||
"gid": 0
|
||||
},
|
||||
"etc/fastfetch/config.jsonc": {
|
||||
"sha256": "2af12ce007705f039870867c89b0fc6f90bcf6c6b29c04b63ab75f345419b1a1",
|
||||
"mode": 420,
|
||||
"uid": 0,
|
||||
"gid": 0
|
||||
}
|
||||
},
|
||||
"builder_trust_and_state_absent": true,
|
||||
"managed_root_tmpfiles": {
|
||||
"home.conf": {
|
||||
"vendor_sha256": "fcc7434662a40ed081eec2c608dd1a3ac8c909440359a7890c08175fb685ff68",
|
||||
"override_sha256": "81cfa05bb475bf605d9fbdb2245705761b8f997727dac478b25b6babece34ee7",
|
||||
"ordinary_directory": "/srv"
|
||||
},
|
||||
"systemd-nspawn.conf": {
|
||||
"vendor_sha256": "29464830fe7050c98670a1560d76df2672ea1792e5d4ba00d13e16a15801808c",
|
||||
"override_sha256": "85b74fa729d312f25d34cd2b8b300e53305ab15dcce8417c2eb05c224c46410d",
|
||||
"ordinary_directory": "/var/lib/machines"
|
||||
},
|
||||
"portables.conf": {
|
||||
"vendor_sha256": "00c398c1f82a0908f1cb45ce482dafcd99c2287a9432acdb385cc9d9a27cdd43",
|
||||
"override_sha256": "910bdf0ceba6def64116bfcfbfa851d5934b4a62e0dbbaa74db19e21c00a7a69",
|
||||
"ordinary_directory": "/var/lib/portables"
|
||||
}
|
||||
},
|
||||
"sanitization": {
|
||||
"files_scanned": 581,
|
||||
"filtered_files": 41,
|
||||
"variable_names": [
|
||||
"HTTPS_PROXY",
|
||||
"HTTP_PROXY",
|
||||
"NO_PROXY"
|
||||
]
|
||||
},
|
||||
"source_commit": "ebeebc7fb1aed07a5f50bc62374365d614953dad",
|
||||
"iso_sha256": "451e058228d7cbea87b5301ae6502b6be609cf7f52cc7c9e6fb477822501389b"
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,189 @@
|
||||
{
|
||||
"schema": 1,
|
||||
"status": "passed",
|
||||
"iso_sha256": "451e058228d7cbea87b5301ae6502b6be609cf7f52cc7c9e6fb477822501389b",
|
||||
"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-13T20:39:59Z",
|
||||
"iso": "hydra-os.iso",
|
||||
"source_commit": "ebeebc7fb1aed07a5f50bc62374365d614953dad",
|
||||
"raw_report_sha256": "2ded3055b6999a3336ead6558bc8e7c134588c9353c5cd202c1116b881f43db1",
|
||||
"harness_sha256": "a56b59b0259282e5b2beaa0a2ed7cb357f45d6c9bba29640aa4831296791ddff",
|
||||
"memory_mib": 4096,
|
||||
"checks": {
|
||||
"live_qmp_kvm": {
|
||||
"status": "passed",
|
||||
"output_sha256": "73741bf0ae47c0d63e9e39bde651b5d15449d680658328b222ba2f837c84a1e3",
|
||||
"evidence": {
|
||||
"enabled": true,
|
||||
"present": true
|
||||
}
|
||||
},
|
||||
"live_boot": {
|
||||
"status": "passed",
|
||||
"output_sha256": "2595ba19b77bbbedac87fa974e237edff158512d7ea0ecfe42d32e431bfa242d",
|
||||
"result": "/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"
|
||||
},
|
||||
"real_installer": {
|
||||
"status": "passed",
|
||||
"output_sha256": "56876246904dce94ed1ac584883403c529267de15dc9918dcc96d4089b66a6d4",
|
||||
"result": "Installer completed via guest controlling TTY"
|
||||
},
|
||||
"live_poweroff": {
|
||||
"status": "passed",
|
||||
"output_sha256": "bfd9b9dfb2690be661de5e9d37e2272dc9c5a10fbd6e5d8ba10842e63329bab7",
|
||||
"result": "QEMU exited before ISO-free reboot"
|
||||
},
|
||||
"installed_qmp_kvm": {
|
||||
"status": "passed",
|
||||
"output_sha256": "73741bf0ae47c0d63e9e39bde651b5d15449d680658328b222ba2f837c84a1e3",
|
||||
"evidence": {
|
||||
"enabled": true,
|
||||
"present": true
|
||||
}
|
||||
},
|
||||
"installed_password_login": {
|
||||
"status": "passed",
|
||||
"output_sha256": "2c32717f3fc0bb7f06629b8260f933c4f35d83ae585775835c746b279c4750b1",
|
||||
"result": "hydratest"
|
||||
},
|
||||
"installed_terminal_ux": {
|
||||
"status": "passed",
|
||||
"output_sha256": "119506083ea62d990dcf6af8994add93cd09b34feded939fa867b3398c879123",
|
||||
"evidence": {
|
||||
"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-d7b31c1e",
|
||||
"uuid": "b58b8996-8743-54ff-a362-42c847a37bd3",
|
||||
"pid": 707,
|
||||
"process_start": "749",
|
||||
"kvm": true
|
||||
},
|
||||
"after_open": {
|
||||
"name": "ux-d7b31c1e",
|
||||
"uuid": "b58b8996-8743-54ff-a362-42c847a37bd3",
|
||||
"pid": 707,
|
||||
"process_start": "749",
|
||||
"kvm": true
|
||||
},
|
||||
"after_menu": {
|
||||
"name": "ux-d7b31c1e",
|
||||
"uuid": "b58b8996-8743-54ff-a362-42c847a37bd3",
|
||||
"pid": 707,
|
||||
"process_start": "749",
|
||||
"kvm": true
|
||||
},
|
||||
"memory_mib": 512,
|
||||
"cpus": 1,
|
||||
"disk_size": "64M",
|
||||
"network": "bridge",
|
||||
"fastfetch_command": [
|
||||
"fastfetch",
|
||||
"--pipe",
|
||||
"false",
|
||||
"--show-errors"
|
||||
],
|
||||
"fastfetch_default_config_sha256": "2af12ce007705f039870867c89b0fc6f90bcf6c6b29c04b63ab75f345419b1a1",
|
||||
"fastfetch_logo_sha256": "a0c67cfbc66a3097fb3ac9b8ec16f75a8b59d8a8994ec43db144426fc089fa67",
|
||||
"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"
|
||||
}
|
||||
},
|
||||
"disk_persistence": {
|
||||
"status": "passed",
|
||||
"output_sha256": "365e772a615be1727b4898bd10c984dc672790aaa617da6444d6281d5b2796be",
|
||||
"result": "Sentinel content verified from command output frame"
|
||||
},
|
||||
"installed_contract": {
|
||||
"status": "passed",
|
||||
"output_sha256": "2b1b0972acbc56b5b6577ebbed2237dc6c285a35b4199a83f1cf9f8f6d6ccf1b",
|
||||
"result": "All assertions in the recorded unchanged harness passed."
|
||||
},
|
||||
"lan_to_vm_tcp": {
|
||||
"status": "passed",
|
||||
"output_sha256": "39e841582e2fae2337515f751e47ce7aea62a04b8d0c81dcf54a0b31d1aee4cd",
|
||||
"result": "PASS: routed new LAN-to-VM TCP connection on arbitrary port 43117"
|
||||
},
|
||||
"nested_kvm": {
|
||||
"status": "passed",
|
||||
"output_sha256": "6ed0138e29e02b7a80d02229febc1eaeb0a91771fb620c9772471f45d0da5317",
|
||||
"result": "All assertions in the recorded unchanged harness passed."
|
||||
},
|
||||
"installed_user_logout": {
|
||||
"status": "passed",
|
||||
"output_sha256": "1f7d9f7fb23265d5cb9b7fbd9b01d9a457527b4017e3aff0b1a4651d5a1ba9cb",
|
||||
"evidence": {
|
||||
"status": "passed",
|
||||
"real_logout": true,
|
||||
"no_open_logins": true,
|
||||
"survival_seconds": 15,
|
||||
"same_vm": {
|
||||
"name": "logout-9587e00e",
|
||||
"uuid": "ed93cd51-4e26-5e1a-ae88-2b34ed2eb665",
|
||||
"pid": 982,
|
||||
"process_start": "1013",
|
||||
"directories": {
|
||||
"/run/user/1000/hydra-logout-9587e00e": [
|
||||
46,
|
||||
52,
|
||||
16832
|
||||
],
|
||||
"/run/user/1000/hydra-logout-9587e00e/logout-9587e00e": [
|
||||
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=8d86c20efc8f48bf803994159b1b5335\nExecMainPID=954\n",
|
||||
"pipewire-pulse.service": "InvocationID=5d452f74172b472c8fad2b998316d7bd\nExecMainPID=956\n",
|
||||
"wireplumber.service": "InvocationID=9b92a86d9d3c47e08069ea7842191da5\nExecMainPID=955\n"
|
||||
}
|
||||
},
|
||||
"audio_scope": "Socket and service continuity only; signal/playback untested"
|
||||
}
|
||||
},
|
||||
"installed_poweroff": {
|
||||
"status": "passed",
|
||||
"output_sha256": "047a24b28a9faa96e7864cc9e6a0621210985e702324326b250028aad6fb15a9",
|
||||
"result": "Normal installed guest shutdown"
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user