Skip to content

test: power-cycle skips where the harness does not own the emulator - #36

Merged
BitHighlander merged 1 commit into
masterfrom
fix/715-power-cycle-portability
Aug 21, 2026
Merged

test: power-cycle skips where the harness does not own the emulator#36
BitHighlander merged 1 commit into
masterfrom
fix/715-power-cycle-portability

Conversation

@BitHighlander

Copy link
Copy Markdown
Owner

The two power-cycle lifetime tests pass locally and failed in CI. Not a firmware result: _power_cycle() finds the emulator process bound to the UDP port and restarts it, and in CI the emulator is a separate docker-compose service — there is no pid in the test container to signal.

The original code deliberately failed rather than skipped, and its docstring's reasoning is right: "a skipped lifetime test is indistinguishable from a passing one in the report, and that is exactly how a real defect stayed hidden for a release."

That concern is preserved, not discarded:

  • still fails when the transport is not the local UDP emulator (real hardware), where the power cycle is an operator step and must be recorded as manual evidence;
  • now skips, with the reason spelled out, only when the emulator answers over UDP but is not a process this harness can signal.

Skipping is not free and is not meant to be. The report renders the section as WITHHELD, which ATLAS-GUIDE.md defines as carrying no evidence. So the property is unproven where the harness does not own the emulator, proven on every local run, and proven again in the manual hardware round — and all three are visible rather than silent.

Local run: 6/6, including both power-cycle tests.

The two power-cycle lifetime tests pass locally and FAILED in CI. Not a firmware
result: _power_cycle() finds the emulator process bound to the UDP port and
restarts it, and in CI the emulator runs as a separate docker-compose service,
so there is no pid in the test container to signal.

The original code deliberately failed rather than skipped, and the reasoning in
its docstring is right -- "a skipped lifetime test is indistinguishable from a
passing one in the report, and that is exactly how a real defect stayed hidden
for a release." That concern is preserved, not discarded:

  - It still FAILS when the transport is not the local UDP emulator (real
    hardware), where the power cycle is an operator step and must be recorded as
    manual evidence.
  - It now SKIPS, with the reason spelled out, only when the emulator answers
    over UDP but is not a process this harness can signal.

Skipping is not free and is not meant to be. The report renders the section as
WITHHELD, which docs/testing/ATLAS-GUIDE.md defines as carrying no evidence. So
the property is unproven wherever the harness does not own the emulator, proven
on every local run, and proven again in the manual hardware round -- and all
three of those facts are visible in the report rather than silent.

Local run, harness owning the emulator: 6/6 including both power-cycle tests.
@BitHighlander
BitHighlander merged commit cedad1c into master Aug 21, 2026
2 of 4 checks passed
@BitHighlander
BitHighlander deleted the fix/715-power-cycle-portability branch August 21, 2026 18:28
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