Skip to content

Recover verified state when PARTUUID symlink disappears after resize timeout #31

Description

@Deadbytes101

Alpha.13 physical boot on exact image SHA-256 454b008c75a4b3e1634bf6081dfab352205b86b4e2b162838ecc7e160c44c154 advanced past the previous Rust e2fsck: exit Some(4) mismatch but still failed to establish persistent state.

Physical evidence:

  • release commit: 4f82bab050038465831b620f8444361a2130d711
  • boot-attested state path: /dev/sdb4
  • state PARTUUID: 5249474f-04
  • core reported resize2fs: timeout
  • recovery then failed with attested state PARTUUID is unavailable: ... /dev/disk/by-partuuid/5249474f-04
  • final state outcome: repair_required
  • /var/lib/rigos remained the live overlay
  • recovery credential remained boot-scoped
  • SSH host identity remained ephemeral

Root cause:

The Python recovery authority currently requires the /dev/disk/by-partuuid/<PARTUUID> udev symlink. After the bounded core resize attempt, that symlink can be temporarily or persistently absent even though the current-boot attestation still identifies the exact state block device by path and major:minor. Recovery fails before it can run its bounded verified e2fsck/resize2fs path.

Required fix:

  • advance the next immutable artifact to Alpha.14
  • retain PARTUUID symlink resolution when available
  • when the symlink is absent, allow only the exact current-boot attested state path as a fallback
  • verify that fallback is a block device with the exact attested major:minor
  • verify its sysfs parent is the exact attested boot disk major:minor
  • verify ext4 type, expected RIGOS state label, exact PARTUUID, and unmounted state
  • reject any mismatch or device substitution
  • keep filesystem commands bounded and configuration/miner fail-closed until state is genuinely ready
  • add source and exact-image assertions for the fallback safety boundary

Physical acceptance requires state ready, /var/lib/rigos mounted from the verified ext4 state partition, password restoration across reboot, persistent SSH fingerprint, configuration activation, and miner startup.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions