[verified] Fix Rust Details live phases, duration, and output layout #29

Merged
astaranix merged 1 commit from astaranix/details-live-output-polish into main 2026-09-07 20:57:54 -04:00 AGit
Owner

Summary

  • Recognize Nix copying-path messages with source/destination stores so the live phase reports Copying after log sanitization.
  • Recover last-apply duration from a separate bounded PID1 lifecycle history follower. Long/noisy output no longer evicts the start marker from the history used for reconciliation.
  • Keep exact unit, boot, invocation, terminal, timestamp, and completeness trust gates. Hide, refresh, disconnect, failure, and shutdown use the existing bounded follower lifecycle and child reaping.
  • Separate the Output/control header from the darker grey log surface, remove the visible record counter, and right-align Pause output with stream status immediately to its left.
  • Add parser, live projection, history, real Iced layout/rendering, click-handling, and companion-process cleanup regressions.
  • Update the Rust-specific geometry smoke analyzer to recognize an outer card surrounding a differently colored log surface, rather than requiring a mostly solid fill.

Verification

  • Rust 1.88.0: cargo test --locked --offline --all-targets — 176 tests passed.
  • Fontless execution of all default-feature test binaries — 176 tests passed.
  • cargo test --locked --offline --no-default-features --all-targets — 80 tests passed.
  • cargo fmt --all -- --check and staged diff whitespace check passed.
  • cargo clippy --locked --offline --all-targets -- -D warnings -A clippy::manual_clamp -A clippy::question_mark passed with the existing baseline exemptions.
  • Actual checks.aarch64-linux.tray-rust-package Nix sandbox build passed, including 176 tests, using nixpkgs dc5d91f840324650bac8c379428c7037a416959a. Its frozen source was compared byte-for-byte with the candidate Git tree.
  • Read-only live status/journal replay through the current Rust code recovered a last-apply duration of 2m 35s.
  • Independent read-only review of the exact candidate tree passed.

GUI smoke evidence and limitation

The final packaged Xvfb/Openbox geometry smoke passed the full width/height, record-count, wrapping, wheel, and clean-exit matrix. The previous solid-fill pixel classifier rejected the correct outer card and measured the inset log surface instead; the test-only correction preserves the geometry assertions.

Initial GUI smoke attempts also intermittently timed out waiting for the tray to exit after SIGTERM. Subsequent exact-candidate and diagnostic runs completed cleanly. The timeout's root cause has not been established; this PR does not claim to fix it. The synchronized main baseline passed its separate smoke runs.

Scope

Rust only. Legacy C++ sources/tests, privileged updater behavior, dependencies, and package definitions are unchanged. No real update, service restart, deployment, or activation was performed.

## Summary - Recognize Nix copying-path messages with source/destination stores so the live phase reports Copying after log sanitization. - Recover last-apply duration from a separate bounded PID1 lifecycle history follower. Long/noisy output no longer evicts the start marker from the history used for reconciliation. - Keep exact unit, boot, invocation, terminal, timestamp, and completeness trust gates. Hide, refresh, disconnect, failure, and shutdown use the existing bounded follower lifecycle and child reaping. - Separate the Output/control header from the darker grey log surface, remove the visible record counter, and right-align Pause output with stream status immediately to its left. - Add parser, live projection, history, real Iced layout/rendering, click-handling, and companion-process cleanup regressions. - Update the Rust-specific geometry smoke analyzer to recognize an outer card surrounding a differently colored log surface, rather than requiring a mostly solid fill. ## Verification - Rust 1.88.0: `cargo test --locked --offline --all-targets` — 176 tests passed. - Fontless execution of all default-feature test binaries — 176 tests passed. - `cargo test --locked --offline --no-default-features --all-targets` — 80 tests passed. - `cargo fmt --all -- --check` and staged diff whitespace check passed. - `cargo clippy --locked --offline --all-targets -- -D warnings -A clippy::manual_clamp -A clippy::question_mark` passed with the existing baseline exemptions. - Actual `checks.aarch64-linux.tray-rust-package` Nix sandbox build passed, including 176 tests, using nixpkgs `dc5d91f840324650bac8c379428c7037a416959a`. Its frozen source was compared byte-for-byte with the candidate Git tree. - Read-only live status/journal replay through the current Rust code recovered a last-apply duration of **2m 35s**. - Independent read-only review of the exact candidate tree passed. ## GUI smoke evidence and limitation The final packaged Xvfb/Openbox geometry smoke passed the full width/height, record-count, wrapping, wheel, and clean-exit matrix. The previous solid-fill pixel classifier rejected the correct outer card and measured the inset log surface instead; the test-only correction preserves the geometry assertions. Initial GUI smoke attempts also intermittently timed out waiting for the tray to exit after SIGTERM. Subsequent exact-candidate and diagnostic runs completed cleanly. The timeout's root cause has not been established; this PR does not claim to fix it. The synchronized main baseline passed its separate smoke runs. ## Scope Rust only. Legacy C++ sources/tests, privileged updater behavior, dependencies, and package definitions are unchanged. No real update, service restart, deployment, or activation was performed.
## Summary

- Recognize Nix copying-path messages with source/destination stores so the live phase reports Copying after log sanitization.
- Recover last-apply duration from a separate bounded PID1 lifecycle history follower. Long/noisy output no longer evicts the start marker from the history used for reconciliation.
- Keep exact unit, boot, invocation, terminal, timestamp, and completeness trust gates. Hide, refresh, disconnect, failure, and shutdown use the existing bounded follower lifecycle and child reaping.
- Separate the Output/control header from the darker grey log surface, remove the visible record counter, and right-align Pause output with stream status immediately to its left.
- Add parser, live projection, history, real Iced layout/rendering, click-handling, and companion-process cleanup regressions.
- Update the Rust-specific geometry smoke analyzer to recognize an outer card surrounding a differently colored log surface, rather than requiring a mostly solid fill.

## Verification

- Rust 1.88.0: `cargo test --locked --offline --all-targets` — 176 tests passed.
- Fontless execution of all default-feature test binaries — 176 tests passed.
- `cargo test --locked --offline --no-default-features --all-targets` — 80 tests passed.
- `cargo fmt --all -- --check` and staged diff whitespace check passed.
- `cargo clippy --locked --offline --all-targets -- -D warnings -A clippy::manual_clamp -A clippy::question_mark` passed with the existing baseline exemptions.
- Actual `checks.aarch64-linux.tray-rust-package` Nix sandbox build passed, including 176 tests, using nixpkgs `dc5d91f840324650bac8c379428c7037a416959a`. Its frozen source was compared byte-for-byte with the candidate Git tree.
- Read-only live status/journal replay through the current Rust code recovered a last-apply duration of **2m 35s**.
- Independent read-only review of the exact candidate tree passed.

## GUI smoke evidence and limitation

The final packaged Xvfb/Openbox geometry smoke passed the full width/height, record-count, wrapping, wheel, and clean-exit matrix. The previous solid-fill pixel classifier rejected the correct outer card and measured the inset log surface instead; the test-only correction preserves the geometry assertions.

Initial GUI smoke attempts also intermittently timed out waiting for the tray to exit after SIGTERM. Subsequent exact-candidate and diagnostic runs completed cleanly. The timeout's root cause has not been established; this PR does not claim to fix it. The synchronized main baseline passed its separate smoke runs.

## Scope

Rust only. Legacy C++ sources/tests, privileged updater behavior, dependencies, and package definitions are unchanged. No real update, service restart, deployment, or activation was performed.
Sign in to join this conversation.
No reviewers
No labels
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
astaranix/nixos-updater!29
No description provided.