randomparity / randomparity/kdive
Live proof: full BYO spine on an x86 host with a BMC
- Dominant language
- Python
- Stars
- 0
- Forks
- 0
- Avg merge
- 1h 26m
- Merged PRs (30d)
- 311
Description
Part of #1814
## Problem
Every entry above this one is proven by unit and contract tests against mock service processors.
None of that proves a real machine crashes, reboots, and yields a usable core. This is the epic's
first blocking success criterion: the whole spine, end to end, on an x86 host with a live BMC.
Unlike the ppc64le guest work, **there is no emulated fallback**. A TCG guest could stand in for a
POWER VM; nothing stands in for a BMC, a real POST cycle, or firmware-driven crash behavior.
## Evidence
- Epic #1814 success criteria 1 and 3: a real vmcore from a force-crashed kernel on an x86 host
with a live BMC, retrieved and opened by drgn; plus a KGDB session hitting a breakpoint and
reading a backtrace.
- AGENTS.md "Done means proven": unit tests green is not working — if the environment can exercise
the change end to end, run that proof and say which arms ran.
- AGENTS.md "Provisioning parity is the extender's job": the runner is a cattle host reprovisioned
from Ansible roles; a host tool that is not declared in the owning role passes on a warmed dev box
and breaks the next clean reprovision.
- `tests/live_vm/__init__.py` — the environment-contract precedent (ADR-0387);
`deploy/ansible/playbooks/runner.yml` codifies the self-hosted runner host.
- `docs/operating/runbooks/live-testing.md` — the canonical map of the live tiers and their
environment contracts.
- Related prior work under epic #1760: #1785 (prove and document the two-ecosystem bare-metal
spine). See #1814's overlap table.
## Expected outcome
- A full-spine proof on real x86 hardware: declare → `doctor` pre-flight → allocate → adopt →
install → boot → force-crash → kdump → retrieve → drgn opens the core → KGDB breakpoint and
backtrace → release with baseline restore, host returns allocatable.
- The **cordon path proven too**, by inducing a teardown failure: #1814 success criterion 4 is not
met by the happy path alone.
- A proof record committed alongside, in the style of the existing
`docs/design/*-proof-record-*.md` files, naming which arms ran and on what hardware.
- Every host tool and package the proof needed declared in the owning Ansible role **in this PR**.
- A new live-test tier or marker if the existing ones do not fit, skipping cleanly on a host
without a BMC so `just ci` is unaffected.
Blocked by #1828
Blocked by #1831
Blocked by #1830
Contributor guide
Research direction
Start with docs/operating/runbooks/live-testing.md, tests/live_vm/__init__.py, deploy/ansible/playbooks/runner.yml, and the success criteria in #1814. Establish the live x86/BMC environment and run the full declare-to-release spine, including the cordon path, then record the hardware and arms in a docs/design/*-proof-record-*.md file. Confirm required host tools are declared in the owning Ansible role and that hosts without a BMC skip cleanly.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- ansible, python
- Domain
- devops, infrastructure, operating-systems, testing-qa
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 25/100