Skip to content

Critical fixes: trustworthy results, AlmaLinux-correct tests, EL10/perf hardening - #1

Merged
xsub merged 7 commits into
mainfrom
critical-fixes
Jun 3, 2026
Merged

Critical fixes: trustworthy results, AlmaLinux-correct tests, EL10/perf hardening#1
xsub merged 7 commits into
mainfrom
critical-fixes

Conversation

@xsub

@xsub xsub commented Jun 3, 2026

Copy link
Copy Markdown
Owner

Implements the CRITICAL.md triage (C1–C8) plus the highest-value EL10/perf
bugs from the audit (P1–P4). Scoped to defects that produce wrong evidence,
lose evidence, or break the documented -c local default run.

Critical (C1–C8)

  • C3 Pin the Ansible stdout callback (ANSIBLE_STDOUT_CALLBACK=default, no color) so a non-default callback can't silently mask failures and report a false passed.
  • C7 Add an HCS_RESULT contract with explicit status precedence over the recap heuristic — a tolerated ignored task no longer flips a passing step to failed.
  • C6 Catch SIGINT, terminate the child process group, and always write a partial report in finally.
  • C4 Default sandbox base /tmp/var/tmp (tmpfs/reboot loses evidence on long runs).
  • C1 containers: install podman (+wget) instead of the absent docker package; fix swapped task names; run_test.sh honors CONTAINER_RUNTIME.
  • C2 network: derive LTS/SUT IPs safely and report unsupported on single-host local runs instead of erroring on an undefined SSH_CONNECTION.
  • C5 ltp: enable crb/powertools by EL major version.
  • C8 New AlmaLinux 9/10 functional CI job: runs --profile check (asserts passed) and single-host --test network (asserts unsupported) — catches role-level regressions beyond syntax checks.

Hardening (P1–P4)

  • P4 Throttle the live progress UI to ~10/s (LTP/Phoronix emit thousands of lines); recap/markers still parsed every line.
  • P1 Drop redhat-lsb-core from LTP (removed on EL9/10, not needed to build).
  • P2 Cap LTP make -j$(nproc) to avoid OOM on high-core hosts.
  • P3 Phoronix runs when free space equals the requirement, not only exceeds it.

Testing

  • Unit tests 18 → 31 (TDD; new coverage for the callback pin, /var/tmp default, derive_status precedence, HCS_RESULT parsing, graceful-stop report, UI throttle).
  • 26 YAML files + 12 shell scripts pass the repo's own validators; hcs compiles; live dry-run verified.

Caveats

ansible-playbook wasn't available locally, so the role/shell edits (C1/C2/C5/P1–P3) are validated by syntax + review. The new C8 job exercises check + network on real AlmaLinux 9/10. Functional containers/ltp runs aren't in CI (nested-container privilege + long compiles) and still rest on review until run on a real SUT.

Test plan

  • CI green (unit, YAML, shell, ansible syntax, AlmaLinux functional)
  • On a real AlmaLinux 10 SUT: python -m hcs run --preset certification --inventory 127.0.0.1, -c local — containers/ltp/network behave as described

xsub and others added 7 commits June 3, 2026 02:27
Pin the Ansible stdout callback so a non-default ANSIBLE_STDOUT_CALLBACK
cannot silently mask failures and report a false pass. Add an HCS_RESULT
contract with explicit status precedence over the recap heuristic, so a
tolerated ignored task no longer flips a passing step to failed. Catch
SIGINT, terminate the child process group, and always write a partial
report in a finally block.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
/tmp is frequently tmpfs or cleared on reboot, risking OOM and loss of
certification evidence during long Phoronix and burn-in runs.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
containers: install podman (and wget) instead of the absent docker package
and fix the swapped install task names; run_test.sh honors CONTAINER_RUNTIME.
network: derive LTS/SUT IPs safely and report unsupported on single-host
local runs instead of failing. ltp: enable crb or powertools by EL major
version.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Execute the check profile and the single-host network test against real
AlmaLinux so role-level regressions are caught beyond syntax checks.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
LTP and Phoronix emit thousands of stdout lines; refreshing the Rich
progress description per line spikes controller CPU. Cap UI refreshes to
~10 per second while still parsing recap and result markers on every line.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
ltp: drop redhat-lsb-core (removed on EL9/10, not needed to build LTP) and
cap make parallelism to nproc to avoid OOM on high-core systems. phoronix:
run when free space equals the requirement, not only when it exceeds it.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
@xsub
xsub merged commit b1ddb6b into main Jun 3, 2026
18 of 20 checks passed
@xsub
xsub deleted the critical-fixes branch June 3, 2026 00:36
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant