[BUG] Release COM1 shell-line input fails with VM status 125 #55

Open
opened 2026-09-16 01:29:35 +02:00 by erikinkinen · 0 comments
Owner

Summary

The release-image gate for separate shell lines through COM1 fails in original Integration CI 1635 after all 486 catalog scenarios pass. The failed inner milestone and cause are not yet established.

Reproduction

Observed once in the retained original CI on September 15, 2026; no unchanged retry or failure-frequency estimate is claimed.

./tests/interactive-shell-lines-vm.sh serial out/appliance/erix-release.img

This is the exact command selected by that revision's workflow. It runs a private copy of the release image through the existing QEMU/OVMF input wrapper.

Expected and actual behavior

Expected: the complete selected input sequence, guest checks and cleanup pass. At 23:13:34 UTC, the wrapper reports stage=serial-input runner_exit=1 vm_exit=125 expected_vm_exit=0 physical_input_exit=unknown serial_input_exit=1 physical_cleanup_requested=0 and fails. Both development input transports and the release physical shell-line probe pass. Later foreground-interrupt gates are not reached.

The status alone does not establish a guest defect, scheduling cause, successful cleanup or the particular input event that stopped making progress.

Environment and identity

  • CI 1635 at original Integration cdf15c52f24bd463dcabdddb945f779fff4ab367.
  • Linux x86-64 CI container, one-CPU QEMU/OVMF release image, original pinned component graph.
  • Existing limits: 120-second VM total, 15-second serial-progress stall and 10-second input command.
  • Original image/firmware bytes and inner runner/input receipts are not available through the run artifact API, so their digests and failing inner event remain unverified.

Evidence and prior checks

All three terminal job logs are complete (13,303,150 bytes), with no compiler/lint warning candidates. Rust and Markdown pass. The integration log proves all 486 catalog scenarios passed and records the separate preceding image/input results above.

The workflow collects diagnostic files and an archive locally, but this original run's artifact API returns an empty list. No missing inner receipt has been reconstructed or treated as successful evidence. This failure is distinct from the earlier mount-policy probe observations in bug #46; a shared cause is not established. No timers, assertions, CI dispatches or guest retries were changed to obtain this report.

Release-input diagnostic design — 16 September 2026: foreground interrupt reuse #54 and COM1 shell lines #55 have complete terminal CI logs but unavailable inner artifacts. The original 486 scenario suites pass; the separate release input failures have no demonstrated shared cause.

Extend the existing bounded native-input progress formatter for the maintained three-line and physical interrupt/reuse profiles. Render only allowlisted event names and command indices from a complete sequential log prefix. Correlate the original private runner receipt and independently observed wrapper status; for physical VM stall/timeout, retain unknown input status and cleanup-request information rather than claiming injector failure or cleanup success. Read only existing fixed-name files through the retained private directory descriptor, keep current byte/record limits and mutation checks, and print no raw command, guest text, token, path or exception. Diagnostic output cannot change probe success, failure precedence or any original timer.

Add original literal positive/malformed/privacy controls, producer-contract checks and real wrapper status tests. Validate the complete changed Integration tree and document the operator interpretation before a signed checkpoint. This improves subsequent evidence; it neither recovers the missing original receipts nor fixes or closes the two underlying regressions.

Release-input diagnostic checkpoint — 16 September 2026: signed Integration df8147dfa437194cd091747fd7147941bd2793c4 adds fixed prefix summaries for shell lines and physical single/repeated interruption. Correlated physical VM-stall/timeout summaries retain unknown input status, failure stage and requested cleanup explicitly. They do not infer injector failure, cleanup success or the next operation's outcome. Only literal event names and bounded scalar fields can be printed; fixed private directory-relative reads, identity checks and original parsing limits remain unchanged. No guest authority, acceptance oracle, error precedence or 120/15/10-second limit changes.

All 172 host cases in eleven suites pass, including 28 diagnostic cases and eight new independent producer, malformed-prefix, private-receipt and actual-wrapper controls. The strict default/all-feature development/release matrix passes 320/321 tests per mode, host/native Clippy, four native builds, formatting and private rustdoc without warnings. A documentation line wrap is the only source change after the Rust matrix. One initial negative fixture had identical transport bytes when both exits were unknown; a distinct contradiction replaces it. An initially over-isolated console-suite invocation is corrected to its maintained CI invocation, without changing that suite or the watchdog.

Signed Docs c4bfc12245036f069d178a10183bb1ed15b4aab5 updates the operator manual. All 45 tests, canonical checks and full rendering pass: 2,377 pages, 435,037 in-bounds word boxes, zero final warnings and both changed pages visually reviewed. API snapshots are unchanged. Matching CI is pending. Release interrupt reuse #54 and release COM1 shell lines #55 remain open: missing original inner artifacts are not recovered, no shared cause is proved, and this checkpoint adds no successful guest run or full guest build.

Diagnostic manual CI — 16 September 2026: Docs c4bfc12245036f069d178a10183bb1ed15b4aab5 passes CI 899/900. All four complete logs total 762,668 bytes; both manual jobs pass 45 tests and produce 2,377 pages with zero final LaTeX warnings. All Markdown checks pass. Integration diagnostic CI 1645/1646 remains queued at its signed head; original release-input bugs 54/55 remain open.

Remaining original CI results — 17 September 2026: permission CI 1644, exact 89d15e4536004c087dcebd63c87216c0fd58958d, finishes with 408 passing and 78 known layout refusals. Release-input CI 1645, exact df8147dfa437194cd091747fd7147941bd2793c4, finishes with 405 passes and 81 failures: those 78 layout refusals, the original quota timeout, and new 120-second FAT32 mirrored/Unicode timeouts. Paired CI 1646, at the same source revision, records 408 passes and only the 78 layout refusals. The separate FAT32 observations are tracked with the canonical bug template in #58; a common cause with quota is not established.

All nine terminal logs are complete, totaling 40,256,559 bytes with zero warning candidates; host/Rust/Markdown checks pass. Original artifact APIs expose no images or inner receipts. Both formerly pending cohorts are fully classified, with their original failures retained. No run was restarted, no limit was increased and no complete product or guest-build acceptance is asserted.

Tracking

Integration source audit #1 and PR #12 coordinate diagnosis. Preserve original failures, recover or improve bounded failure diagnostics, establish the actual failing boundary, and add appropriate positive/negative coverage before closing this report. Maintain the current timing and authority constraints.

## Summary The release-image gate for separate shell lines through COM1 fails in original Integration CI 1635 after all 486 catalog scenarios pass. The failed inner milestone and cause are not yet established. ## Reproduction Observed once in the retained original CI on September 15, 2026; no unchanged retry or failure-frequency estimate is claimed. ```sh ./tests/interactive-shell-lines-vm.sh serial out/appliance/erix-release.img ``` This is the exact command selected by that revision's workflow. It runs a private copy of the release image through the existing QEMU/OVMF input wrapper. ## Expected and actual behavior Expected: the complete selected input sequence, guest checks and cleanup pass. At 23:13:34 UTC, the wrapper reports `stage=serial-input runner_exit=1 vm_exit=125 expected_vm_exit=0 physical_input_exit=unknown serial_input_exit=1 physical_cleanup_requested=0` and fails. Both development input transports and the release physical shell-line probe pass. Later foreground-interrupt gates are not reached. The status alone does not establish a guest defect, scheduling cause, successful cleanup or the particular input event that stopped making progress. ## Environment and identity - [CI 1635](https://git.erikinkinen.fi/erix/integration/actions/runs/1635) at original Integration `cdf15c52f24bd463dcabdddb945f779fff4ab367`. - Linux x86-64 CI container, one-CPU QEMU/OVMF release image, original pinned component graph. - Existing limits: 120-second VM total, 15-second serial-progress stall and 10-second input command. - Original image/firmware bytes and inner runner/input receipts are not available through the run artifact API, so their digests and failing inner event remain unverified. ## Evidence and prior checks All three terminal job logs are complete (13,303,150 bytes), with no compiler/lint warning candidates. Rust and Markdown pass. The integration log proves all 486 catalog scenarios passed and records the separate preceding image/input results above. The workflow collects diagnostic files and an archive locally, but this original run's artifact API returns an empty list. No missing inner receipt has been reconstructed or treated as successful evidence. This failure is distinct from the earlier mount-policy probe observations in [bug #46](https://git.erikinkinen.fi/erix/integration/issues/46); a shared cause is not established. No timers, assertions, CI dispatches or guest retries were changed to obtain this report. Release-input diagnostic design — 16 September 2026: [foreground interrupt reuse #54](https://git.erikinkinen.fi/erix/integration/issues/54) and [COM1 shell lines #55](https://git.erikinkinen.fi/erix/integration/issues/55) have complete terminal CI logs but unavailable inner artifacts. The original 486 scenario suites pass; the separate release input failures have no demonstrated shared cause. Extend the existing bounded native-input progress formatter for the maintained three-line and physical interrupt/reuse profiles. Render only allowlisted event names and command indices from a complete sequential log prefix. Correlate the original private runner receipt and independently observed wrapper status; for physical VM stall/timeout, retain unknown input status and cleanup-request information rather than claiming injector failure or cleanup success. Read only existing fixed-name files through the retained private directory descriptor, keep current byte/record limits and mutation checks, and print no raw command, guest text, token, path or exception. Diagnostic output cannot change probe success, failure precedence or any original timer. Add original literal positive/malformed/privacy controls, producer-contract checks and real wrapper status tests. Validate the complete changed Integration tree and document the operator interpretation before a signed checkpoint. This improves subsequent evidence; it neither recovers the missing original receipts nor fixes or closes the two underlying regressions. Release-input diagnostic checkpoint — 16 September 2026: signed Integration `df8147dfa437194cd091747fd7147941bd2793c4` adds fixed prefix summaries for shell lines and physical single/repeated interruption. Correlated physical VM-stall/timeout summaries retain unknown input status, failure stage and requested cleanup explicitly. They do not infer injector failure, cleanup success or the next operation's outcome. Only literal event names and bounded scalar fields can be printed; fixed private directory-relative reads, identity checks and original parsing limits remain unchanged. No guest authority, acceptance oracle, error precedence or 120/15/10-second limit changes. All 172 host cases in eleven suites pass, including 28 diagnostic cases and eight new independent producer, malformed-prefix, private-receipt and actual-wrapper controls. The strict default/all-feature development/release matrix passes 320/321 tests per mode, host/native Clippy, four native builds, formatting and private rustdoc without warnings. A documentation line wrap is the only source change after the Rust matrix. One initial negative fixture had identical transport bytes when both exits were unknown; a distinct contradiction replaces it. An initially over-isolated console-suite invocation is corrected to its maintained CI invocation, without changing that suite or the watchdog. Signed Docs `c4bfc12245036f069d178a10183bb1ed15b4aab5` updates the operator manual. All 45 tests, canonical checks and full rendering pass: 2,377 pages, 435,037 in-bounds word boxes, zero final warnings and both changed pages visually reviewed. API snapshots are unchanged. Matching CI is pending. [Release interrupt reuse #54](https://git.erikinkinen.fi/erix/integration/issues/54) and [release COM1 shell lines #55](https://git.erikinkinen.fi/erix/integration/issues/55) remain open: missing original inner artifacts are not recovered, no shared cause is proved, and this checkpoint adds no successful guest run or full guest build. Diagnostic manual CI — 16 September 2026: Docs `c4bfc12245036f069d178a10183bb1ed15b4aab5` passes CI 899/900. All four complete logs total 762,668 bytes; both manual jobs pass 45 tests and produce 2,377 pages with zero final LaTeX warnings. All Markdown checks pass. Integration diagnostic CI 1645/1646 remains queued at its signed head; original release-input bugs 54/55 remain open. Remaining original CI results — 17 September 2026: permission [CI 1644](https://git.erikinkinen.fi/erix/integration/actions/runs/1644), exact `89d15e4536004c087dcebd63c87216c0fd58958d`, finishes with 408 passing and 78 known layout refusals. Release-input [CI 1645](https://git.erikinkinen.fi/erix/integration/actions/runs/1645), exact `df8147dfa437194cd091747fd7147941bd2793c4`, finishes with 405 passes and 81 failures: those 78 layout refusals, the original quota timeout, and new 120-second FAT32 mirrored/Unicode timeouts. Paired [CI 1646](https://git.erikinkinen.fi/erix/integration/actions/runs/1646), at the same source revision, records 408 passes and only the 78 layout refusals. The separate FAT32 observations are tracked with the canonical bug template in [#58](https://git.erikinkinen.fi/erix/integration/issues/58); a common cause with quota is not established. All nine terminal logs are complete, totaling 40,256,559 bytes with zero warning candidates; host/Rust/Markdown checks pass. Original artifact APIs expose no images or inner receipts. Both formerly pending cohorts are fully classified, with their original failures retained. No run was restarted, no limit was increased and no complete product or guest-build acceptance is asserted. ## Tracking [Integration source audit #1](https://git.erikinkinen.fi/erix/integration/issues/1) and [PR #12](https://git.erikinkinen.fi/erix/integration/pulls/12) coordinate diagnosis. Preserve original failures, recover or improve bounded failure diagnostics, establish the actual failing boundary, and add appropriate positive/negative coverage before closing this report. Maintain the current timing and authority constraints.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
erix/integration#55
No description provided.