[BUG] Housekeeping fixture conflates queued SERIAL control with registration deferral #2

Closed
opened 2026-09-12 22:42:14 +02:00 by erikinkinen · 0 comments
Owner

Summary

The Deviced housekeeping unit test conflates queued SERIAL control with provider-registration deferral and carries a stale release-feature expectation that queued control is consumed. The stricter component matrix exposes this assertion failure. No production readiness or capability-retirement failure is demonstrated.

Reproduction

Use Deviced original 5824765c11 with the reviewed RTC duplicate-submission cleanup and its isolated test hooks. Run cargo test --locked --offline --all-targets --features deviced-runtime-release-image with the selected original dependency graph. This command was executed once; its failure was retained. The failing test and housekeeping production path are unchanged from that original commit.

Expected and actual behavior

service_housekeeping_defers_ready_flush_for_pending_provider_registration should exercise an actual registration wait. Separately, queued SERIAL control must stay pending (1) and not be falsely marked logged (0) if host log submission is unavailable. The original fixture already queues SERIAL readiness, which satisfies the role-ready predicate and removes its registration wait. Housekeeping therefore reaches the logging path; release policy deliberately keeps SERIAL READY as internal control and the host has no validated Logd endpoint. The test nevertheless expects pending=0 only in the release feature configuration. The actual assertion observes 1 versus expected 0; Cargo exits 101. The other 128 tests, including all six new RTC boundary tests, pass.

Environment and identity

  • Deviced original commit: 5824765c11, plus explicit reviewed source/test deltas; no synthetic revision.
  • Original dependency-source helper: Integration e2b1cf5995bcf6334839cda9a013e90fa97787d5; cross-repository Cargo PackageIDs retain their original Git sources; the root Deviced checkout and explicit source overlay are bound separately.
  • Rust 1.97.1, x86_64 Linux host, warning-denied compilation and two test threads. This is the deviced-runtime-release-image feature in Cargo's test profile, not an optimized image build.
  • No VM, image, guest capability, or physical hardware operation was used by this reproduction.
  • Last known passing execution of this exact release feature test is not established.

Evidence and prior checks

The retained command ran 129 tests: 128 passed and one failed at src/ipc/dispatch/service_loop_tests.rs:651. Its actual exit and primary failure status are both 101; owned process-group cleanup is clear. Default and runtime feature matrices passed before this failure. A first test-only correction added a real receiver precondition and exposed the original fixture inconsistency (0 versus expected receiver467), which was also retained as a failed run. The revised deferral fixture puts queued readiness on an unrelated running registered role while SERIAL still awaits registration, and checks the actual receiver before and after housekeeping. A separately named test retains the original queued SERIAL scenario and checks the unavailable host endpoint plus pending1/logged0. The production early return in runtime_loop.rs:15 applies to the revised deferral fixture, not the original one. No runtime code or log policy changes.

The correction is signed and pushed as f7b4f8d8b994d08188010c1f5a42ff3144d9a50e in Deviced draft PR #3. Final default/runtime suites pass 135 tests each and release/all-feature suites pass 136 each across three binaries. Both housekeeping cases, formatting, strict host/freestanding Clippy, warning-denied host builds and private-item rustdoc pass. Original failure and failed-correction evidence remain retained. Exact-revision push CI 200 and PR CI 201 both pass. Each passes all four host/freestanding configuration matrices and 135/135/136/136 unit tests, including the six RTC and two housekeeping cases in each configuration. All four complete job logs are retained (210382 bytes), with zero warning or failure candidates. CI completes the pinned source preparation; full Cargo PackageID JSON remains separately supported by the local metadata receipts. The fixture defect is corrected and its component CI gate is verified. Broader runtime, Integration and audit work remains tracked separately.

Tracking

Coordinate with the Deviced audit issue #1 and the component implementation PR. Regression acceptance requires the corrected literal prerequisite/postcondition test in default, runtime, release and all-feature configurations, plus the remaining strict component checks. No boot-stall fix or guest-delivery proof is claimed.

## Summary The Deviced housekeeping unit test conflates queued SERIAL control with provider-registration deferral and carries a stale release-feature expectation that queued control is consumed. The stricter component matrix exposes this assertion failure. No production readiness or capability-retirement failure is demonstrated. ## Reproduction Use Deviced original 5824765c1177c7d596340d2171eaeaf6897383f6 with the reviewed RTC duplicate-submission cleanup and its isolated test hooks. Run `cargo test --locked --offline --all-targets --features deviced-runtime-release-image` with the selected original dependency graph. This command was executed once; its failure was retained. The failing test and housekeeping production path are unchanged from that original commit. ## Expected and actual behavior `service_housekeeping_defers_ready_flush_for_pending_provider_registration` should exercise an actual registration wait. Separately, queued SERIAL control must stay pending (1) and not be falsely marked logged (0) if host log submission is unavailable. The original fixture already queues SERIAL readiness, which satisfies the role-ready predicate and removes its registration wait. Housekeeping therefore reaches the logging path; release policy deliberately keeps SERIAL READY as internal control and the host has no validated Logd endpoint. The test nevertheless expects pending=0 only in the release feature configuration. The actual assertion observes 1 versus expected 0; Cargo exits 101. The other 128 tests, including all six new RTC boundary tests, pass. ## Environment and identity - Deviced original commit: 5824765c1177c7d596340d2171eaeaf6897383f6, plus explicit reviewed source/test deltas; no synthetic revision. - Original dependency-source helper: Integration e2b1cf5995bcf6334839cda9a013e90fa97787d5; cross-repository Cargo PackageIDs retain their original Git sources; the root Deviced checkout and explicit source overlay are bound separately. - Rust 1.97.1, x86_64 Linux host, warning-denied compilation and two test threads. This is the `deviced-runtime-release-image` feature in Cargo's test profile, not an optimized image build. - No VM, image, guest capability, or physical hardware operation was used by this reproduction. - Last known passing execution of this exact release feature test is not established. ## Evidence and prior checks The retained command ran 129 tests: 128 passed and one failed at `src/ipc/dispatch/service_loop_tests.rs:651`. Its actual exit and primary failure status are both 101; owned process-group cleanup is clear. Default and runtime feature matrices passed before this failure. A first test-only correction added a real receiver precondition and exposed the original fixture inconsistency (0 versus expected receiver467), which was also retained as a failed run. The revised deferral fixture puts queued readiness on an unrelated running registered role while SERIAL still awaits registration, and checks the actual receiver before and after housekeeping. A separately named test retains the original queued SERIAL scenario and checks the unavailable host endpoint plus pending1/logged0. The production early return in `runtime_loop.rs:15` applies to the revised deferral fixture, not the original one. No runtime code or log policy changes. The correction is signed and pushed as `f7b4f8d8b994d08188010c1f5a42ff3144d9a50e` in [Deviced draft PR #3](https://git.erikinkinen.fi/erix/deviced/pulls/3). Final default/runtime suites pass 135 tests each and release/all-feature suites pass 136 each across three binaries. Both housekeeping cases, formatting, strict host/freestanding Clippy, warning-denied host builds and private-item rustdoc pass. Original failure and failed-correction evidence remain retained. Exact-revision [push CI 200](https://git.erikinkinen.fi/erix/deviced/actions/runs/200) and [PR CI 201](https://git.erikinkinen.fi/erix/deviced/actions/runs/201) both pass. Each passes all four host/freestanding configuration matrices and 135/135/136/136 unit tests, including the six RTC and two housekeeping cases in each configuration. All four complete job logs are retained (210382 bytes), with zero warning or failure candidates. CI completes the pinned source preparation; full Cargo PackageID JSON remains separately supported by the local metadata receipts. The fixture defect is corrected and its component CI gate is verified. Broader runtime, Integration and audit work remains tracked separately. ## Tracking Coordinate with [the Deviced audit issue #1](https://git.erikinkinen.fi/erix/deviced/issues/1) and the component implementation PR. Regression acceptance requires the corrected literal prerequisite/postcondition test in default, runtime, release and all-feature configurations, plus the remaining strict component checks. No boot-stall fix or guest-delivery proof is claimed.
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/deviced#2
No description provided.